我正在尝试开发一个系统,用户可以在其中滚动flowLayoutPanel,其中包含面板上的列表(动态创建)。每个面板都有一个pictureBox和两个标签。 当用户将鼠标悬停在面板上时,我希望面板的背景图像发生变化。
到目前为止,我已经制作了这些方法:
private void pnlMouseHover(object sender, EventArgs e)
{
Panel panel1 = sender as Panel;
panel1.BackgroundImage = STUDIO2.Properties.Resources.buttonbackgroundmouseover;
}
private void pnlMouseLeave(object sender, EventArgs e)
{
Panel panel1 = sender as Panel;
panel1.BackgroundImage = STUDIO2.Properties.Resources.buttonbackground;
}
这些工作正常,但在运行系统时,只有当鼠标悬停在标签或图片框 覆盖的部分面板上时,这些方法才会运行。
当鼠标悬停在面板内的区域(由标签或图片框覆盖)上时,如何更改此项,背景图像会发生变化?
答案 0 :(得分:1)
解决这个问题的可能性是无穷无尽的。这是一种方式。
输入&离开强>
将panel_Hover
事件更改为panel_Enter
,以便不会持续触发事件。
有条件退出
在删除图片之前检查指针的位置。
private void pnlMouseLeave(object sender, EventArgs e)
{
Panel panel1 = sender as Panel; // ← Your code
Point mousePosition = PointToClient(Control.MousePosition);
bool hasPointerInside = panel1.ClientRectangle.Contains(mousePosition);
if (!hasPointerInside)
{
// Your code ↓
panel1.BackgroundImage = STUDIO2.Properties.Resources.buttonbackground;
}
}