主题:双击时禁用单击事件
abcvbc
[专家分:0] 发布于 2009-11-17 16:20:00
怎么禁用单击事件,如在双击时禁用鼠标左键单击?
回复列表 (共7个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2009-11-18 09:11:00
双击本就不引发单击事件,但鼠标按下、释放事件确实无法避免。
板凳
老大徒伤悲 [专家分:29120] 发布于 2009-11-18 09:11:00
当然你可以设置逻辑变量来控制。
3 楼
tanchuhan [专家分:15140] 发布于 2009-11-18 11:16:00
把单击事件的处理延后("鼠标双击的时间" \ 2 + 1)毫秒, 在这期间,如果发生了双击事件,就把单击事件的处理取消.除此之外没什么好办法了.
大概是这样:
[code=c]
Option Explicit
Private Declare Function GetDoubleClickTime Lib "user32" () As Long
Private WithEvents tmrClick As Timer
Private Sub Form_Load()
Set tmrClick = Me.Controls.Add("VB.Timer", "tmrClick")
tmrClick.Enabled = False
tmrClick.Interval = GetDoubleClickTime \ 2 + 1
End Sub
Private Sub Form_Click()
tmrClick.Enabled = True
End Sub
Private Sub Form_DblClick()
tmrClick.Enabled = False
MsgBox "你[双]击了我"
End Sub
Private Sub tmrClick_Timer()
tmrClick.Enabled = False
MsgBox "你[单]击了我"
End Sub
[/code]
4 楼
abcvbc [专家分:0] 发布于 2009-11-18 11:53:00
我想到了更好的办法,十分简单。两个问题就一并解决了,用static 声明个局部变量,控制mousedown只使之击一次有效,就解决了。
5 楼
tanchuhan [专家分:15140] 发布于 2009-11-18 12:19:00
[quote]我想到了更好的办法,十分简单。两个问题就一并解决了,用static 声明个局部变量,控制mousedown只使之击一次有效,就解决了。[/quote]
贴代码看看.
6 楼
jamie518 [专家分:0] 发布于 2010-01-21 10:13:00
把单击事件的处理延后("鼠标双击的时间" \ 2 + 1)毫秒, 在这期间,如果发生了双击事件,就把单击事件的处理取消.除此之外没什么好办法了.
大概是这样:
Option Explicit
Private Declare Function GetDoubleClickTime Lib "user32" () As Long
Private WithEvents tmrClick As Timer
Private Sub Form_Load()
Set tmrClick = Me.Controls.Add("VB.Timer", "tmrClick")
tmrClick.Enabled = False
tmrClick.Interval = GetDoubleClickTime \ 2 + 1
End Sub
Private Sub Form_Click()
tmrClick.Enabled = True
End Sub
Private Sub Form_DblClick()
tmrClick.Enabled = False
MsgBox "你[双]击了我"
End Sub
Private Sub tmrClick_Timer()
tmrClick.Enabled = False
MsgBox "你[单]击了我"
End Sub
7 楼
lx99cool [专家分:50] 发布于 2010-01-24 21:12:00
HOOK屏蔽单击事件不知道可不可以
我来回复