控件悬停颜色
本文关键字:颜色 悬停 控件 | 更新日期: 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;
您可以为MouseIn
和MouseOut
定义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;