快速地连续点击时 Click 事件的响应好象并不连续
编号:QA000560
建立日期: 1999年2月28日 最后修改日期:2001年4月10日
所属类别:
CoolChen:
操作系统:中文版 Windows98
编程工具:中文版 Visual Basic 5.0
请问:
我想用 PictureBox 做一个 ActiveX 控件,是一个按钮,可是按钮总要涉及到鼠标点击事件吧,结果快速地连续点击时 Click 事件的响应好象并不连续。我用下面这段程序示范了这个过程:
新建一个 Form,放一个 PictureBox 控件,然后在 Form 中粘贴如下代码:
Option Explicit
Private Sub Form_Load()
Picture1.BackColor = QBColor(0)
End Sub
' 用 Mouse_Down、Mouse_Up 事件我也试过,效果都一样。
Private Sub Picture1_Click()
Static N As Long
N = -(N = 0)
Picture1.BackColor = QBColor(N)
End Sub
你会发现当连续、快速地点击 PictureBox 时,它的颜色不会同步迅速地改变。但是有一点很奇怪,当你用左右键交替地迅速点击时,PictureBox 的响应就很快。
回答:
我试了一下,有你说的问题。我估计是因为你的点击太快了,而VB的相应的过程执行的时间比你点击间隔要长。至于你左右键点击时,认为响应快可能是错觉,因为左右键点击通常比连续点击慢(你的手的缘故),实际情况差不多。
叮叮当当的意见:
实际上是这样的:Windows由于要区分鼠标单击和双击,对于一次鼠标点击并不马上判为单击,而是等待一定的时间后,如果没有另一次点击发生,才判为一次有效的单击。如果在这段时间里又发生了一次或多次点击,则有可能判为双击,发送到Windows消息链中。这个“一定的时间”其实就是在Windows控制面板的鼠标设置中的“双击速度”时间。因此,联系实际,如果你在上述程序中给Picture1_DblClick()事件添加同Picture1_Click()一样的代码,就解决了。
此问题由李海回答。
| |
|
|
| |
|
|