检测鼠标是否停止移动vb.net

时间:2012-09-14 18:01:24

标签: vb.net events timer mouse groupbox

我想在鼠标停止移动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

2 个答案:

答案 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 BooleanPrivate 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秒。如果不是问

,那么在阅读代码时应该很容易理解代码并给它一些思考