有一个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是程序后来生成的,如何对它们编辑这样的事件。

解决方案 »

  1.   

    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]);
    la[i].Click+=(obj,eve)=>MessageBox.Show("你单击了label"+i);//C#3.0语法。
    //也可以根据控件名来处理:MessageBox.Show(obj.ToString());//稍微处理一下就行了
    }
    }
      

  2.   

    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].Click+=new System.EventHandler(Label_Click);//正统语法
    flowLayoutPanel1.Controls.Add(la[i]);
    }
    }private void Label_Click(object sender, EventArgs e)
    {
    ...
    }
      

  3.   


    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].Name="Label"+i;
    la[i].Text = Convert.ToString(i);
    (Label)la[i].Click +=new  EventHandler(Label_Click);
    flowLayoutPanel1.Controls.Add(la[i]);
    }
    }
    private void Label_Click(object sender,EventArgs e)
    {
        MessageBox.show("你单击了"+(Label)sender.Name);
    }
      

  4.   


    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].Name="Label"+i;
    la[i].Text = Convert.ToString(i);
    (Label)la[i].Click +=new  EventHandler(Label_Click);
    flowLayoutPanel1.Controls.Add(la[i]);
    }
    }
    private void Label_Click(object sender,EventArgs e)
    {
        MessageBox.show("你单击了"+(Label)sender.Name);
    }