这是图像和代码.....但是,它对我不起作用。专家,请告诉错误在哪里???
图片在这里: 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
编辑1:面板的停靠栏设置为填充...。
即使面板的停靠栏是 Fill,您的代码也适合我...... 我认为你应该尝试隔离问题。 如果我创建一个包含 2 个面板的表单,一个停靠到 TOP,另一个停靠到 FILL,您的代码对我有用,使用事件 鼠标输入 和 鼠标离开... 您的问题不在于 dock 属性,也不在于使用的事件。
如果仍然找不到问题,则可以从新窗体开始,然后逐步添加代码,直到找到使程序停止工作的步骤。
仅当鼠标触摸面板本身时,才会引发鼠标事件。如果面板中有其他控件,则当鼠标悬停在它们上方时,将引发其鼠标事件。
在您的图像中,您似乎有一个覆盖每个面板的PictureBox
,这意味着您还必须处理其MouseEnter
和MouseLeave
事件才能正常工作:
私有子PanelHome_MouseEnter(sender as object, e as eventArgs( handle PanelHome.MouseEnter,PictureBoxHome.MouseEnter PanelHome.BackColor = Color.FromArgb(100, 25, 181, 254( 结束子 私有子PanelHome_MouseLeave(sender As Object,e As EventArgs(处理PanelHome.MouseLeave,PictureBoxHome.MouseLeave'检查鼠标是否仍在控件的边界内。 如果不是 PanelHome.DisplayRectangle.Contains(Cursor.Position( 则 PanelHome.BackColor = Color.FromArgb(255, 25, 181, 254( 结束如果 End Sub
(你也需要对代码的其余部分做同样的事情(
但是,如果您不需要以背景颜色以外的任何其他方式更改这些面板,那么最好删除面板并仅保留图片框。