如何在运行时创建的控件上添加事件

时间:2014-01-06 13:00:33

标签: c# .net events

我想在按钮上创建click事件(2个按钮在运行时创建)

我用它来创建按钮:

private void Form1_Load(object sender, EventArgs e)
{
    for (int k = 0; k < 2; k++)
    {
        Button Btn = new Button();
        Btn.Name = "btn" + k;
        Btn.Location = new System.Drawing.Point(20 + (k *110), 60 + (20 * j) * 2);
        Btn.Size = new System.Drawing.Size(90, 30);
         if (k == 0)               
            Btn.Text = "Back";

         else
            Btn.Text = "Calculate";

        this.Controls.Add(Btn);
    }
}

先谢谢。

4 个答案:

答案 0 :(得分:2)

只需使用:

Btn.Click += button1_Click;

private void button1_Click(object sender, EventArgs e)
{

}

答案 1 :(得分:2)

像这样增强你的循环:

for (int k = 0; k < 2; k++)
{
    Button Btn = new Button();
    Btn.Name = "btn" + k;
    Btn.Location = new System.Drawing.Point(20 + (k *110), 60 + (20 * j) * 2);
    Btn.Size = new System.Drawing.Size(90, 30);
     if (k == 0)               
        Btn.Text = "Back";

     else
        Btn.Text = "Calculate";

    Btn.Click += button_Click; // <-- This is where it happens!

    this.Controls.Add(Btn);
}

然后添加事件处理程序:

private void button_Click(object sender, EventArgs e)
{
    Button btn = sender as Button;
    if (btn.Name.Equals("..."))
    {
    }
    else
    {
    }    
}

请注意,在事件处理程序中,您需要通过查看Name属性来决定按下了哪个按钮。

答案 2 :(得分:1)

喜欢这个

   btn1.Click += new EventHandler(this.btn1_Click);

答案 3 :(得分:1)

Btn.Click += Btn_Click;

void Btn_Click(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

在VS中,您可以按两次按下Btn.Click +=按钮,它会为您生成方法。