问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vb鼠标右键双击事件

发布网友 发布时间:2022-05-01 10:02

我来回答

5个回答

热心网友 时间:2023-10-07 14:46

先说明几点:
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

热心网友 时间:2023-10-07 14:46

屏蔽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
Mole1里代码:
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

热心网友 时间:2023-10-07 14:46

可以在MOUSEUP事件里面进行右键的判断然后累加。
另外设置一个1秒的定时器定时给累加的数归零。
当累加的数便为2是,调用一个过程,这个过程自定义。
这个过程就是要发生的右键双击的事件。

热心网友 时间:2023-10-07 14:47

事件里选中Double click然后再赋值

热心网友 时间:2023-10-07 14:48

尽量不要出现右键双击,左键双击就好啦
!11
1
1

1
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 c#鼠标双击事件取值问题! 苹果id换手机号 鼠标左键双击事件,C++代码 如何鼠标在组合框双击弹出事件(非MFC) mfc中如何做鼠标双击事件的响应 JAVA鼠标双击事件 C# 如何获得全局鼠标双击事件 vivoy79手机网络信号显示是50k一直保持在50左右 点进软件加载缓慢下载软件很慢网速是移动 vivoY79怎么设置总流量 外汇交易平台排行榜? 刚去一家公司财务部实习,想具体学习一下会计工作的所有流程,应从哪里入手,所有的顺序是什么?请高手指 有什么东西可以不让电脑中毒? 如何控制让自己的电脑不中毒 除了安装补丁和杀毒软件外,怎样才能让电脑不中病毒? 如何让自己的电脑不中病毒 怎么才能让电脑不中病毒 泡沫的隔音效果好不好? 怎样防止计算机中毒 怎么才能让电脑不中毒 泡沫板的隔音效果好不好 在WPF中如何写鼠标双击事件 C#双击事件和鼠标双击事件有什么不同 (MFC)鼠标双击事件的消息是WM_什么? 两相电2.2千瓦潜水泵在90米扬程0.25的水管一小时能抽多少吨水 水井用两相电潜水泵最高垂直扬程多少米,价格多少钱 单相电水泵扬程与三相电水泵扬程有区别吗 从厦门站到曾厝垵有直达的公交车么 厦门北站到曾厝垵怎样坐车最方便快捷? 厦门火车站到曾厝垵怎么走 厦门火车站到曾厝垵 简洁路线 厦门站到曾厝垵西边怎么走 厦门火车站去曾厝垵怎么走 厦门高崎机场到曾厝垵坐什么车最方便 从厦门曾厝垵到哪一个好一些的电影院比较方便,做什么公交车呢 厦门北站到曾厝安brt怎么坐?到曾厝安哪里下车?大概要多久的时间? 曾厝垵村到厦门站怎么走 从厦门机场到曾厝垵可以坐什么公交车?需要多少时间? 钟南山说吃哪一种仙草能思维活跃 中国钟南山院士是素食吗? 中国钟南山院士吃什么牌子的保健品?