lzth.net
当前位置:首页 >> vB鼠标双击事件 >>

vB鼠标双击事件

先说明几点:1.不是所有的对象,都有双击事件(zhangfeizimo在前面说过了)2.支持双击事件的对象,在触发这个事件时,并不识别是不是右键3.能识别右键的事件,不区分是单击还是双击 所以,如果用系统的自带单一事件,是不能直接完成

Option ExplicitPrivate Declare Function GetDoubleClickTime Lib "user32" () As Long '获得双击时间间隔Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer '获得鼠标状态Dim PreviousTime As

Private Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) Private Const MOUSEEVENTF_LEFTDOWN = &H2

你的动作是单击还是双击是系统定义的,去控制面板看一下,鼠标有一项设置叫双击时间间隔,他决定了你两次单击是不是双击.从编程的角度,你编写的程序的窗口收到的双击的消息是来自系统的,在用户两次单击时,如果系统检测到两次的时间间隔小于上面设定的那个值,就当成是双击,如果不是的话,就是两次单击.

思路:把双击 Label1 的执行代码转向单击事件.Private Sub Label1_Click() If Check1.Value = 1 Then Check1.Value = 0 Else Check1.Value = 1 End If End Sub Private Sub Label1_DblClick() Label1_Click End Sub

private declare sub mouse_event lib "user32" alias "mouse_event" (byval dwflags as long, byval dx as long, byval dy as long, byval cbuttons as long, byval dwextrainfo as long)private const mouseeventf_leftdown = &h2 ' 左键按下 private const

不用那么嗦.○在窗体中输入以下代码:Private Sub Command1_Click() lHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf CallMouseHookProc, App.hInstance, 0)End SubPrivate Sub Command2_Click() UnhookWindowsHookEx

开始,控制面板,打印机和其他硬件,鼠标,启用单击锁定前的勾取消,确定.

顺序?不一样举个例子说明吧 一个文本框的情况下你操作的是文本框1,并且文本框1已经获取到了焦点,顺序如下 鼠标移动→鼠标按下→鼠标松开→单击→双击→松开 如果是两个文本框并且暂没获取焦点 顺序如下 鼠标移动→鼠标按下→获取焦点→鼠标松开→单击→双击→松开

这种情况是无法避免的,因为双击是由两次单击组成的,如果你要求系统只响应双击事件不响应单击事件,那么系统在接收到键盘发来的一次单击动作时,它就会暂时停顿下来,因为它不知道紧接着会不会还有一次单击动作,如果有就是双击,如果没有就是单击.这个过程虽说是“一眨眼”,但也足以使单击事件产生明显的延时(举个极端的例子:假如你把双击的时间间隔设为10秒,那么即使没有双击,控件的单击事件也要在10秒后才触发!),会严重影响用户体验,所以系统不可能为了双击事件而自动屏蔽单击事件的.因此,通常情况下,单击事件和双击事件最好不要同时使用,也就是说用了单击就不要再用双击,反之用了双击也不要再用单击.

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com