如何注册事件?

irearn 2009-02-02 01:24:08
有一个form,里面有一个panel,我一单击button,panel里生成了两个label,代码如下:
private void button1_Click(object sender, EventArgs e)
{
int n = 2;
Label[] la = new Label[n];
for (int i = 0; i < n; i++)
{
la[i] = new Label();
la[i].Text = Convert.ToString(i);
flowLayoutPanel1.Controls.Add(la[i]);
}
}
然后我单击label1(左边那个) 弹出对话框,“你单击了label1”,单击右边那个就是“你单击了label2”。

我知道怎么弹出对话框,我想弄明白的是,这两个label是程序后来生成的,在哪里如何对它们编辑这样的事件。
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hechenqingtian 2009-02-02
  • 打赏
  • 举报
回复
private void button1_Click(object sender, EventArgs e)
{
for(int i=0;i<2;i++)
{
Label lbl=new Lable();
lbl.Click+=new EventHandler(lbl_click);
this.panel1.Controls.Add(lbl);
}
}

public void lbl_click(object sender, EventArgs e)
{
//sender就是你单击的对象
}
宝_爸 2009-02-02
  • 打赏
  • 举报
回复
多个控件注册一个handler然后通过sender参数来区分:

private void button1_Click(object sender, EventArgs e)
{
int n = 2;
Label[] la = new Label[n];
for (int i = 0; i < n; i++)
{
la[i] = new Label();
la[i].Text = Convert.ToString(i);
la[i].BorderStyle = BorderStyle.Fixed3D;
if (i!=0)
la[i].Height = la[i - 1].Height + 20;
la[i].Click += new EventHandler(label_Click);

this.panel1.Controls.Add(la[i]);
}

}

private void label_Click(object sender, EventArgs e)
{
Label lb = (Label)sender;
MessageBox.Show("you click " + lb.Text);
}
irearn 2009-02-02
  • 打赏
  • 举报
回复
实际上这个数组可能生成将近一千多个LABEL,如何批量注册事件?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧