函数-参数
观察自动生成的事件信息可以知道有两个参数
object sender, EventArgs e
sender是组件,使用时需要强制转换成组件类别,e是事件信息,例如鼠标的信息。
编写函数需要参数一致
private void Button_Click(object sender, EventArgs e)
{
var p = (PictureBox)sender;
p.BackColor = Panel2Color;
}
添加函数
p.MouseEnter += new System.EventHandler(Button_MouseEnter);
p.MouseLeave += new System.EventHandler(Button_MouseLeave);
p.Click += new System.EventHandler(Button_Click);
示例
// 选项窗口的背景色变化 (离开后变为Panel1背景色,选中后变为Panel2背景色)
private Color ButtonEnter = Color.FromArgb(223, 243, 227);
List<PictureBox> Buttons = new List<PictureBox>();
PictureBox ChooseButton;
void InitButtons()
{
Buttons.Add(pictureBox6);
Buttons.Add(pictureBox7);
Buttons.Add(pictureBox8);
Buttons.Add(pictureBox9);
Buttons.Add(pictureBox10);
foreach(var p in Buttons)
{
p.MouseEnter += new System.EventHandler(Button_MouseEnter);
p.MouseLeave += new System.EventHandler(Button_MouseLeave);
p.Click += new System.EventHandler(Button_Click);
}
Button_Click(pictureBox6, null);
}
private void Button_Click(object sender, EventArgs e)
{
var p = (PictureBox)sender;
p.BackColor = Panel2Color;
ChooseButton = p;
foreach(var q in Buttons)
{
if (!q.Equals(ChooseButton))
{
q.BackColor = Panel1Color;
}
}
}
private void Button_MouseEnter(object sender, EventArgs e)
{
var p = (PictureBox)sender;
if (ChooseButton.Equals(p)) return;
p.BackColor = ButtonEnter;
}
private void Button_MouseLeave(object sender, EventArgs e)
{
var p = (PictureBox)sender;
if (ChooseButton.Equals(p)) return;
p.BackColor = Panel1Color;
}