2011-05-13 211 views
2

我试图隐藏鼠标指针,当有几秒钟的不活动时,然后当用户移动鼠标时再次显示指针。我已经能够让鼠标指针隐藏并重新显示,但是当我执行grid.Children.Clear()grid.Children.Add()时,鼠标指针重新出现(但是在几秒钟不活动之后再次隐藏)。隐藏鼠标指针

我的代码如下:

Private Sub Window1_MouseMoved(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseMove 
    'MsgBox("Mouse Has Moved", MsgBoxStyle.Critical, "Mouse Moved") 
    LastMouseMove = DateTime.Now 
    If IsHidden Then 
    Cursor = Cursors.Arrow 
    IsHidden = False 
    End If 
End Sub 

Private Sub MouseHide_Tick(ByVal sender As Object, ByVal e As EventArgs) 
    Dim elaped As TimeSpan = DateTime.Now - LastMouseMove 
    If elaped >= TimeoutToHide AndAlso Not IsHidden Then 
    Cursor = Cursors.None 
    IsHidden = True 
    'System.Console.SetCursorPosition(0, 0) 
    End If 
End Sub 

Private Sub setupMouseHide() 
    Try 
    'Dim timer As New System.Timers.Timer(1000) 
    Dim dispatcherTimer As DispatcherTimer = New System.Windows.Threading.DispatcherTimer() 
    AddHandler dispatcherTimer.Tick, AddressOf MouseHide_Tick 
    dispatcherTimer.Interval = New TimeSpan(0, 0, 3) 
    dispatcherTimer.Start() 
    Catch ex As Exception 
    MsgBox(ex.Message, MsgBoxStyle.Critical, "Setup Display Message: error encountered") 
    End Try 
End Sub 

我想知道,这是一个已知的问题,或者是有什么实现,我试图做的更好的办法?

感谢,

马特

回答

1

这可能是一个错误,但它并不鲜见布局变化都会引发鼠标移动事件。

我想说你最好的选择可能是检查并存储鼠标移动事件中鼠标的实际坐标。这样你可以忽略错误的鼠标移动事件。

不理想,但我认为它会奏效。