控制悬停颜色

时间:2013-02-25 10:24:45

标签: c# winforms panel

对不起,这是一个初学者的问题,但我没有通过。 我有一个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功能? 如果是,怎么样?

5 个答案:

答案 0 :(得分:3)

你应该投吧:

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

并将所有4个面板的这一功能用作事件处理程序

答案 1 :(得分:3)

您可以将发件人对象转换为类似

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

答案 2 :(得分:3)

您应首先将发件人对象强制转换为Panel:

Panel panel = sender as Panel;
if (panel == null)
    return;

panel.BackColor = Blue;

答案 3 :(得分:1)

您可以为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

的情况相同

答案 4 :(得分:0)

将鼠标移入并功能删除您放置的所有代码,并在下面编写一行简单的代码 并尝试它会起作用

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