适用于面板中所有控件的 C# 方法
C# Method applying to all controls in a panel
我正在尝试开发一个系统,用户可以在其中滚动浏览 flowLayoutPanel,其中包含面板上的列表(动态创建)。每个面板都有一个图片框和两个标签。
当用户将鼠标悬停在面板上时,我希望面板的背景图像发生变化。
到目前为止我已经做了这些方法:
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;
}
这些工作得很好,但是当 运行 在系统中使用这些方法时 运行 当鼠标悬停在面板的一部分时 而不是 被标签或图片框覆盖。
如何更改此设置,以便当鼠标悬停在面板内被标签或图片框覆盖的区域时,背景图像会发生变化?
解决这个问题的可能性是无限的。这是一种方法。
进入&离开
将您的 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;
}
}
我正在尝试开发一个系统,用户可以在其中滚动浏览 flowLayoutPanel,其中包含面板上的列表(动态创建)。每个面板都有一个图片框和两个标签。 当用户将鼠标悬停在面板上时,我希望面板的背景图像发生变化。
到目前为止我已经做了这些方法:
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;
}
这些工作得很好,但是当 运行 在系统中使用这些方法时 运行 当鼠标悬停在面板的一部分时 而不是 被标签或图片框覆盖。
如何更改此设置,以便当鼠标悬停在面板内被标签或图片框覆盖的区域时,背景图像会发生变化?
解决这个问题的可能性是无限的。这是一种方法。
进入&离开
将您的 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;
}
}