控件悬停颜色

本文关键字:颜色 悬停 控件 | 更新日期: 2023-09-27 18:00:51

对不起,这是一个初学者的问题,但我还没有解决。我有一个Windows窗体应用程序,上面有4个面板控件。现在我希望当用户用鼠标悬停时,面板可以更改背景。我尝试过以下内容:

private void Panel1_MouseIn(object sender, EventArgs e)
{
    panel1.BackColor = Color.Red;
}
private void Panel1_MouseOut(object sender, EventArgs e)
{
    panel1.BackColor = Color.Blue;
}

这很好,但因为我有4个面板,而不是一个,所以我必须再添加6个这样的功能。。。我试图为所有这些创建一个单独的函数,但事件发送器没有可访问的BackColor属性。

有没有一种方法可以为所有面板创建一个MouseIn功能?如果是,如何?

控件悬停颜色

YOu应该投射它:

private void Panel_MouseIn(object sender, EventArgs e)
{
  Panel pan = sender as Panel;
  pan.BackColor = Color.Red;
} 

并将这一函数用于所有4个面板作为事件处理程序

您可以将发送方对象强制转换为类似的面板

Panel panel = (Panel)sender;
if(panel != null)
// Set the BackColor

您应该首先将sender对象强制转换为Panel:

Panel panel = sender as Panel;
if (panel == null)
    return;
panel.BackColor = Blue;

您可以为MouseInMouseOut定义EventHandler,然后定义

private void Panel1_MouseIn(object sender, EventArgs e)
{
    Panel p = sender as Panel;
    if(p == panel1){
        //set color  
    }
    else if(p == panel2){
       //set color
    }
...
}  

MouseOut 也是如此

在鼠标中,函数移除所有放置的代码,并在下面写一行简单的代码尝试一下,它会工作

((Control)sender).BackColor = Color.Red;