我想在鼠标停止移动timer
groupbox
截至目前,我在鼠标悬停在组框时启动计时器,并在离开组框时将其停止。
Private Sub gbxMouseMap_MouseHover(sender As Object, e As System.EventArgs) Handles gbxMouseMap.MouseHover
Timer.Start()
End Sub
Private Sub gbxMouseMap_MouseLeave(sender As Object, e As System.EventArgs) Handles gbxMouseMap.MouseLeave
Timer.Stop()
End Sub
答案 0 :(得分:1)
在MouseMove事件中,将名为 LastMoveTime 的类变量设置为当前计时器已用时间。在MouseHover事件中检查 LastMoveTime 是否已达到超时时间,如果是,则停止计时器。
我会帮你的...
Private LastMoveTime As DateTime
Private MouseTimeoutMilliseconds as Integer = 500
'put inside hover
If LastMoveTime.AddMilliseconds(MouseTimeoutMilliseconds) < Now Then
Timer.Stop()
Else
Timer.Start()
End if
答案 1 :(得分:0)
为了防止必须为许多控件处理这个问题,您可以重新排列一些内容并缓存信息,知道游标是否移动以及空闲时间有多长,为此,您需要一个Point变量和一个Date变量。计时器需要一直打勾。此外,要平衡光标显示/隐藏调用,您需要一个变量来跟踪其可见性状态。以下是完整的代码示例:
Private loc As Point, idle As Date, hidden As Boolean
,
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If loc <> Cursor.Position Then
If hidden Then
Cursor.Show()
hidden = False
End If
loc = Cursor.Position
idle = Date.Now
ElseIf Not hidden AndAlso (Date.Now - idle).TotalSeconds > 3 Then
Cursor.Hide()
hidden = True
End If
End Sub
此计时器每1 / 2-1秒可以打勾,具体取决于您的响应时间,空闲时间设置为3秒。如果不是问
,那么在阅读代码时应该很容易理解代码并给它一些思考