请教如何实现让多个控件共享一个事件?
本帖最后由 gladiatorxp 于 2013-01-23 22:00:49 编辑
最近在改一个别人写的程序,一个屏幕上面有若干个panel,panel上面有整齐排着的几列label,我发现原来的程序之定义了每一列第一行的那个label对应的一个click事件,但是跑起来整列的label都能响应这个click事件,我问了些程序的人,但是他比较忙只说了大概什么授权之类的做法,不知道哪位能详细说明一下?谢谢!!
label
控件
------解决方案--------------------labe11.Click += commonclickhandler;
labe12.Click += commonclickhandler;
labe13.Click += commonclickhandler;
labe14.Click += commonclickhandler;
...
void commonclickhandler(object sender, EventAggs e)
{
...
}
------解决方案-------------------- public Form1()
{
InitializeComponent();
this.label1.Click += label_Click;
this.label2.Click +=label_Click;
}
private void label_Click(object sender, EventArgs e)
{
throw new NotImplementedException();
}
------解决方案--------------------可以的,通过代码后绑定label的click事件
private void Form2_Load(object sender, EventArgs e)
{
foreach (Control c in panel1.Controls)
{
if (c is Label) //判断是不是Label控件
{
c.Click += label_Click; //动态绑定Label的Click事件
}
}
}
/// <summary>
/// 所有label的click事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void label_Click(object sender, EventArgs e)
{
}
------解决方案-------------------- public Form1()
{
InitializeComponent();