vb.net - не работают события mouseEnter и MouseLeave - PullRequest
0 голосов
/ 13 июня 2018

Вот изображение и код ..... но он не работает для меня.Эксперты, подскажите, пожалуйста, где ошибка ???

изображение здесь: https://drive.google.com/open?id=1rUBq68ULDkTiFFv2uEiV_oQIh3wQIfhd

Private Sub PanelHome_MouseEnter(sender As Object, e As EventArgs) Handles PanelHome.MouseEnter
    PanelHome.BackColor = Color.FromArgb(100, 25, 181, 254)
End Sub

Private Sub PanelHome_MouseLeave(sender As Object, e As EventArgs) Handles PanelHome.MouseLeave
    PanelHome.BackColor = Color.FromArgb(255, 25, 181, 254)
End Sub

Private Sub PanelTuner_MouseEnter(sender As Object, e As EventArgs) Handles PanelTuner.MouseEnter
    PanelTuner.BackColor = Color.FromArgb(50, 25, 181, 254)
End Sub

Private Sub PanelTuner_MouseLeave(sender As Object, e As EventArgs) Handles PanelTuner.MouseLeave
    PanelTuner.BackColor = Color.FromArgb(255, 25, 181, 254)
End Sub

Private Sub PanelContents_MouseEnter(sender As Object, e As EventArgs) Handles PanelContents.MouseEnter
    PanelContents.BackColor = Color.FromArgb(50, 25, 181, 254)
End Sub

Private Sub PanelContents_MouseLeave(sender As Object, e As EventArgs) Handles PanelContents.MouseLeave
    PanelContents.BackColor = Color.FromArgb(255, 25, 181, 254)
End Sub

Private Sub PanelAboutUs_MouseEnter(sender As Object, e As EventArgs) Handles PanelAboutUs.MouseEnter
    PanelAboutUs.BackColor = Color.FromArgb(50, 25, 181, 254)
End Sub

Private Sub PanelAboutUs_MouseLeave(sender As Object, e As EventArgs) Handles PanelAboutUs.MouseLeave
    PanelAboutUs.BackColor = Color.FromArgb(255, 25, 181, 254)
End Sub

Private Sub PanelWriteToUs_MouseEnter(sender As Object, e As EventArgs) Handles PanelWriteToUs.MouseEnter
    PanelWriteToUs.BackColor = Color.FromArgb(50, 25, 181, 254)
End Sub

Private Sub PanelWriteToUs_MouseLeave(sender As Object, e As EventArgs) Handles PanelWriteToUs.MouseLeave
    PanelWriteToUs.BackColor = Color.FromArgb(255, 25, 181, 254)
End Sub

Edit1: Док панели установлен на заливка ....

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

События мыши возникают только в том случае, если мышь касается самой панели .Если у вас есть другие элементы управления внутри панели, тогда, когда мышь над ними, вместо них будут генерироваться события мыши.

На вашем изображении вы видите PictureBox, который покрывает каждую панель, то есть вам придетсяобработайте его MouseEnter и MouseLeave события , а также , чтобы это работало:

Private Sub PanelHome_MouseEnter(sender As Object, e As EventArgs) Handles PanelHome.MouseEnter, PictureBoxHome.MouseEnter
    PanelHome.BackColor = Color.FromArgb(100, 25, 181, 254)
End Sub

Private Sub PanelHome_MouseLeave(sender As Object, e As EventArgs) Handles PanelHome.MouseLeave, PictureBoxHome.MouseLeave
    'Check if the mouse is still inside the control's bounds.
    If Not PanelHome.DisplayRectangle.Contains(Cursor.Position) Then
        PanelHome.BackColor = Color.FromArgb(255, 25, 181, 254)
    End If
End Sub

(вам нужно сделать то же самое для остальной части вашего кода)

Однако если вам не нужно менять эти панели каким-либо другим способом, кроме цвета фона, то лучше удалить панели и оставить только графические блоки.

0 голосов
/ 14 июня 2018

Даже если панель панели Fill, ваш код работает для меня ... Я думаю, что вы должны попытаться изолировать проблему.Если я создаю форму с 2 панелями, одна Docked to TOP, а другая Docked to FILL, ваш код работает для меня, используя события MouseEnter и MouseLeave ... Ваша проблема не в свойстве dock и не в используемых событиях.

Если вы все еще не можете найти проблему, вы можете начать с новой формы и добавлять код шаг за шагом, пока не найдете шаг, который заставит вашу программу перестать работать.

...