寻找高手解决小问题(已过三天没人答对)

mi6236 2003-09-25 08:30:04
Private Sub Form_Mouseup(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu menu1
End If
End Sub
上面代码右键单击一次能弹出menu1,再单击右键没有反应,需单击左键再单击右键才能弹出menu1。
如何只连续单击右键就能连续弹出menu1.

曾经试过
Form_MouseUp

改成

Form_MouseDown


用在PopupMenu menu1 前写 me.refresh

谢谢!
...全文
134 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
imur 2003-09-27
  • 打赏
  • 举报
回复
学习
T2 2003-09-27
  • 打赏
  • 举报
回复
你自己有没有调试一下看看啊,就放上来了
wx05 2003-09-27
  • 打赏
  • 举报
回复
要不就在Form_Mouseup 代码中添加一行代码,看看怎样
Private Sub Form_Mouseup(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu menu1
form_mouseup 1,0,0 '添加改句,
End If
End Sub
T2 2003-09-27
  • 打赏
  • 举报
回复
没用。达不到预期效果
tangyang8061 2003-09-27
  • 打赏
  • 举报
回复
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu menu1
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
menu1.Visible = False
End Sub
海牛 2003-09-27
  • 打赏
  • 举报
回复
还不结帖给分?
海牛 2003-09-27
  • 打赏
  • 举报
回复
'小弟我有办法,这要借助于API函数!

Private Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As RECT) As Long
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

'写一个方法,参数lIndex代表从左到友第几个菜单。
Private Sub ShowMyMenu(ByVal lIndex As Long)
Dim lM As Long
Dim objR As RECT
Dim tP As POINTAPI

lM = GetMenu(Me.hwnd)
lM = GetSubMenu(lM, lIndex)
Call GetCursorPos(tP)

Call TrackPopupMenu(lM, 0, tP.x + 2, tP.y + 2, 0, Me.hwnd, objR)
End Sub

^_^试一试!
kmzs 2003-09-27
  • 打赏
  • 举报
回复
没啥问题呀
T2 2003-09-27
  • 打赏
  • 举报
回复
不是代码有问题也不是别的程序影响是没有达到真正的目的
你们打开IE和Microsoft开发环境,点击右键弹出菜单,不移动鼠标再点击右键还会弹出菜单
但是用VB开发的程序却不行
free12345 2003-09-27
  • 打赏
  • 举报
回复
这段代码本身没有问题,看看是不是其他代码的影响
Kivic 2003-09-27
  • 打赏
  • 举报
回复
确实没有问题的,不需要修改,你的vb没升级过吧
mi6236 2003-09-26
  • 打赏
  • 举报
回复
感谢 回复人: James0001(See-Plus-Plus)
mi6236 2003-09-26
  • 打赏
  • 举报
回复
我找到了一种解决方法,经实验可行
Private Sub Form_Mouseup(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu menu1
End If
End Sub

Private Sub Form_Mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single)
menu1.visible=false
End Sub
但此方法不足只处是,会将主菜单中的menu1隐藏,在mousedown事件中再放置menu1.visible=true又不能实现连击,是否可通过乒乓键设置实现。
不过一般快捷菜单的原主菜单项大都作成隐藏。

northwolves 2003-09-26
  • 打赏
  • 举报
回复
正如网页上超级连接单击左键可以打开,单击右键只能响应菜单后再继续。没有好办法
northwolves 2003-09-26
  • 打赏
  • 举报
回复
TAMES0001果然高明:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
PopupMenu MENU1, vbPopupMenuRightButton
End Sub
James0001 2003-09-26
  • 打赏
  • 举报
回复
PopupMenu menu1, vbPopupMenuRightButton '就行了
mi6236 2003-09-26
  • 打赏
  • 举报
回复
正确可行方法见
本版James0001(See-Plus-Plus)老兄的帖子。
y1g1y1 2003-09-26
  • 打赏
  • 举报
回复
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu mnuView, , X + 16, Y + 16
End If
End Sub
T2 2003-09-26
  • 打赏
  • 举报
回复
你们理解错他的意思啦
当鼠标原地不动按右键时就不能连续不断的弹出菜单了,微软的窗口就可以
正在找答案中。。。
yoki 2003-09-26
  • 打赏
  • 举报
回复
把代码加到Form_Mousedown事件中去处理吧
加载更多回复(9)

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧