首页 > 解决方案 > 多个按钮的 MouseEnter 事件上的 Visual Studio 更改面板背景颜色

问题描述


我是 C# 的新手,并且在搞乱事件处理程序。我的表格中有很多面板。如果我的鼠标在它们上方,我希望它们改变颜色。我可以在我的 Form.cs 中为每个面板创建单独的函数。有没有更有效的方法?您可以通过事件传递参数并执行类似的操作并将所需的面板作为参数发送吗?
private void Panel_MouseEnter(object sender, EventArgs e, Panel p)
    {
        p.BackColor=System.Draw.etc;
    }

我将如何从我的 Form.Designer.cs 中调用它?

标签: c#event-handling

解决方案


面板实际上是发送者,你所需要的只是Panel p = (Panel)sender;
因为这个,事件实际上可以被所有面板重复使用。

这意味着您可以将所有面板悬停事件注册到同一个函数。

完整代码:

private void Panel_MouseEnter(object sender, EventArgs e)
{
    Panel p = (Panel)sender;
    p.BackColor=System.Draw.etc;
}

推荐阅读