回 帖 发 新 帖 刷新版面

主题:双击时禁用单击事件

怎么禁用单击事件,如在双击时禁用鼠标左键单击?

回复列表 (共7个回复)

沙发

双击本就不引发单击事件,但鼠标按下、释放事件确实无法避免。

板凳

当然你可以设置逻辑变量来控制。

3 楼

把单击事件的处理延后("鼠标双击的时间" \ 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 楼

我想到了更好的办法,十分简单。两个问题就一并解决了,用static 声明个局部变量,控制mousedown只使之击一次有效,就解决了。

5 楼

[quote]我想到了更好的办法,十分简单。两个问题就一并解决了,用static 声明个局部变量,控制mousedown只使之击一次有效,就解决了。[/quote]
贴代码看看.

6 楼

把单击事件的处理延后("鼠标双击的时间" \ 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 楼

HOOK屏蔽单击事件不知道可不可以

我来回复

您尚未登录,请登录后再回复。点此登录或注册