2012-01-05 61 views
2

所以我有一個簡單的窗體上的按鈕。在窗體的MouseEnter事件中,我將該按鈕設置爲可見。在窗體的MouseLeave事件中,我將該按鈕設置爲隱藏。實際上,只有當您將鼠標懸停在表單上時,才能看到該按鈕。問題是,當您將光標放在按鈕上時,它會消失。即使按鈕直接位於窗體的中心,它仍會顯示相同的行爲。顯示懸停問題

除了將MouseEnter/Exit事件放置在按鈕和表單中的其他所有內容之外,是否有解決方案?

Public Class VerticalStrip 
    Private Sub VerticalStrip_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
     btnAdd.Visible = False 
    End Sub 

    Private Sub VerticalStrip_MouseEnter(sender As Object, e As System.EventArgs) Handles Me.MouseEnter 
     btnAdd.Visible = True 
    End Sub 

    Private Sub VerticalStrip_MouseLeave(sender As Object, e As System.EventArgs) Handles Me.MouseLeave 
     btnAdd.Visible = False 
    End Sub 
End Class 

回答

3

是;在MouseLeave事件中,首先檢查鼠標是否實際上已經離開了表單:

Public Class VerticalStrip 
    Private Sub VerticalStrip_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
     btnAdd.Hide() 
    End Sub 

    Private Sub VerticalStrip_MouseEnter(sender As Object, e As System.EventArgs) Handles Me.MouseEnter 
     btnAdd.Show() 
    End Sub 

    Private Sub VerticalStrip_MouseLeave(sender As Object, e As System.EventArgs) Handles Me.MouseLeave 
     If Not Me.ClientRectangle.Contains(Me.PointToClient(Windows.Forms.Cursor.Position)) Then 
      btnAdd.Hide() 
     End If 
    End Sub 
End Class 
+0

簡單。謝謝。 – 2012-01-05 05:18:50