中易网

vb鼠标右键双击事件

答案:6  悬赏:80  
解决时间 2021-02-13 05:54
vb鼠标右键双击事件
最佳答案
先说明几点:
1.不是所有的对象,都有双击事件(zhangfeizimo在前面说过了)
2.支持双击事件的对象,在触发这个事件时,并不识别是不是右键
3.能识别右键的事件,不区分是单击还是双击

所以,如果用系统的自带单一事件,是不能直接完成你想的目的
不过,可以变通,将几个事件结合起来,就可以实现,看看下面的方法:

Dim LastButton As Integer

Private Sub Form_DblClick()
If LastButton = 2 Then
Text1.Text = 2
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
LastButton = Button
End Sub
全部回答
事件里选中Double click然后再赋值
可以在MOUSEUP事件里面进行右键的判断然后累加。 另外设置一个1秒的定时器定时给累加的数归零。 当累加的数便为2是,调用一个过程,这个过程自定义。 这个过程就是要发生的右键双击的事件。
尽量不要出现右键双击,左键双击就好啦 !11 1 1 1 !
屏蔽TEXT1右键菜单,利用计时器判断是否双击: form1里代码: Option Explicit Private blnF As Boolean Private Sub Command1_Click() Text1 = "" End Sub Private Sub Form_Load() Timer1.Interval = 1000 Timer1.Enabled = False End Sub Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then OldWindowProc = GetWindowLong(Text1.hWnd, GWL_WNDPROC) Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf MyMesg) If blnF Then Text1 = "右键双击": blnF = False: Timer1.Enabled = False: Exit Sub blnF = True '设置右键检查标志 Timer1.Enabled = True Else Text1 = "右键未双击" blnF = False End If End Sub Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then Button = 1 Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, OldWindowProc) End If End Sub Private Sub Timer1_Timer() blnF = False Timer1.Enabled = False Text1 = "右键单击" End Sub Module1里代码: Option Explicit Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public OldWindowProc As Long Public Const WM_CONTEXTMENU = &H7B Public Const GWL_WNDPROC = (-4) Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Function MyMesg(ByVal hWnd As OLE_HANDLE, ByVal Msg As OLE_HANDLE, ByVal wp As OLE_HANDLE, ByVal lp As Long) As Long If Msg <> WM_CONTEXTMENU Then MyMesg = CallWindowProc(OldWindowProc, hWnd, Msg, wp, lp) Exit Function End If MyMesg = True End Function
prout sub doubt click_()
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
化州市供销社消费品协会合江分会地址有知道的
剑侠情缘手游杨熙烈适合哪个门派
跪求封神榜TVB粤语版高清下载地址
杜淳演的电视剧叫小童是那一部
讯达智能手机大卖场地址在哪,我要去那里办事
shinvi神飞的资料?
VB中字符和数值有什么区别?
亮哥酸辣粉(总店)地址在哪,我要去那里办事
手机靓号用多少年才可以取消最低消费
东北电力大学电力系统及其自动化专业的二学历
最好的越野车是什么车
原声带音乐空间地址在什么地方,想过去办事
我想借15000元有什么好办法吗
杭州哪的衣服款式多有便宜
友汇陶瓷这个地址在什么地方,我要处理点事
推荐资讯
sim卡联系人怎么在苹果7怎么通讯录
联想b51 30,80lk要多少钱
who repaired the bench
寒风吹雾千里雪对下联
怎么把1.3g的视频压缩成900多m?
关于描写城市的英文单词有哪些??
如此无聊的试用期,应该怎么度过?职场高手都
打飞机会长痘痘吗
求dnf技能冷却闪光补丁
LOL亚索解禁后有没有被削?
必须回本校填高考志愿吗
狙击手:胜利的艺术 20寸宽屏分辨率是多少
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?