执行dbclick时click时间也发生

来源:百度知道 编辑:UC知道 时间:2024/06/30 18:29:03
就是双击时先发生了click事件又发生了dbclick事件.
告诉我怎么设置
还有我不要将它设置成单击延迟~
Private Sub Form_Click()
Caption = "鼠标单击"
Print "欢迎使用VB"

End Sub

Private Sub Form_DblClick()
Caption = "鼠标双击"
Print "结束使用VB"

我是有Click事件的~

to zdingyun:
不知你是真这么想的还是单纯想挣这5分?
用这么堆代码来伪装,真是费劲心思了
去掉那些cls就全明白了
还有那句end真是用的妙

///还有我不要将它设置成单击延迟~

貌似不正确的逻辑
如果不延迟,就是先让单击事件发生,那么双击事件一定是晚于单击事件发生的,所以就多发生了一次单击事件
貌似必须延迟一个双击的间隔周期,在此周期内没有发生双击事件,才能确定此次操作为单击,才能执行单击事件的代码,也就是你所谓的延迟

====

用GetDoubleClickTime可以获取双击事件的间隔周期
Private [Public] Declare Function GetDoubleClickTime Lib "user32" () As Long

====

还有一种方法,前提是你的单击事件必须是可逆的,你需要为单击事件重写一个类似Undo的代码段
然后不管是否双击,都先执行单击代码,在双击的间隔周期内,如果发生了双击事件,则撤消单击事件刚才所做的事件并执行双击事件代码,如果双击间隔周期内未发生双击事件则不做处理,也就是只执行了一次单击代码

Option Explicit
Dim dbOld As Integer
Dim a
Dim b
Private Sub Form_DblClick()
dbOld = dbOld + 1
Timer1_Timer
End
End Sub

Private Sub Form_Load()
dbOld = 1
a = "欢迎使用VB"
b = "结束使用VB"
Form1.Caption = "鼠标单双击"
Timer1.Interval = 0
Timer2.In