vb.net- mouseEnter 和 MouseLeave 事件不工作
vb.net- mouseEnter and MouseLeave event not working
这是图片和代码.....但是,它对我不起作用。高手,请告知哪里出错了???
图片在这里:
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: 面板的停靠栏设置为 fill...
即使面板的停靠栏是 Fill,您的代码也适合我...
我认为您应该尝试隔离问题。
如果我创建一个包含 2 个面板的表单,一个停靠到 TOP,另一个停靠到 FILL,您的代码对我有用,使用事件 MouseEnter 和 MouseLeave ...
您的问题不在于扩展坞 属性,也不在于使用的事件。
如果还是找不到问题,可以从一个新的Form开始,一步步添加代码,直到找到让程序停止工作的步骤。
仅当鼠标触摸面板本身时才会引发鼠标事件。如果您在面板内有其他控件,那么当鼠标悬停在它们上面时,它们的鼠标事件将被触发。
在您的图像中,您似乎有一个 PictureBox
覆盖每个面板,这意味着您还必须处理其 MouseEnter
和 MouseLeave
事件 为了这个工作:
Private Sub PanelHome_MouseEnter(sender As Object, e As EventArgs) 句柄 PanelHome.MouseEnter, PictureBoxHome.MouseEnter
PanelHome.BackColor = Color.FromArgb(100, 25, 181, 254)
结束子
Private Sub PanelHome_MouseLeave(sender As Object, e As EventArgs) Handles PanelHome.MouseLeave, PictureBoxHome.MouseLeave
'检查鼠标是否仍在控件的边界内。
如果不是 PanelHome.DisplayRectangle.Contains(Cursor.Position) 那么
PanelHome.BackColor = Color.FromArgb(255, 25, 181, 254)
万一
结束子
(您也需要对其余代码执行相同的操作)
但是,如果您不需要以任何其他方式更改这些面板而不是背景颜色,那么最好删除面板并只保留图片框。
这是图片和代码.....但是,它对我不起作用。高手,请告知哪里出错了???
图片在这里: 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: 面板的停靠栏设置为 fill...
即使面板的停靠栏是 Fill,您的代码也适合我... 我认为您应该尝试隔离问题。 如果我创建一个包含 2 个面板的表单,一个停靠到 TOP,另一个停靠到 FILL,您的代码对我有用,使用事件 MouseEnter 和 MouseLeave ... 您的问题不在于扩展坞 属性,也不在于使用的事件。
如果还是找不到问题,可以从一个新的Form开始,一步步添加代码,直到找到让程序停止工作的步骤。
仅当鼠标触摸面板本身时才会引发鼠标事件。如果您在面板内有其他控件,那么当鼠标悬停在它们上面时,它们的鼠标事件将被触发。
在您的图像中,您似乎有一个 PictureBox
覆盖每个面板,这意味着您还必须处理其 MouseEnter
和 MouseLeave
事件 为了这个工作:
Private Sub PanelHome_MouseEnter(sender As Object, e As EventArgs) 句柄 PanelHome.MouseEnter, PictureBoxHome.MouseEnter PanelHome.BackColor = Color.FromArgb(100, 25, 181, 254) 结束子 Private Sub PanelHome_MouseLeave(sender As Object, e As EventArgs) Handles PanelHome.MouseLeave, PictureBoxHome.MouseLeave '检查鼠标是否仍在控件的边界内。 如果不是 PanelHome.DisplayRectangle.Contains(Cursor.Position) 那么 PanelHome.BackColor = Color.FromArgb(255, 25, 181, 254) 万一 结束子
(您也需要对其余代码执行相同的操作)
但是,如果您不需要以任何其他方式更改这些面板而不是背景颜色,那么最好删除面板并只保留图片框。