Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在运行时创建的控件上添加事件_C#_.net_Events - Fatal编程技术网

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

C# 如何在运行时创建的控件上添加事件,c#,.net,events,C#,.net,Events,我想在按钮上创建单击事件(运行时创建了两个按钮) 我正在使用它创建按钮: 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 +

我想在按钮上创建单击事件(运行时创建了两个按钮)

我正在使用它创建按钮:

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);
    }
}
private void Form1\u加载(对象发送方,事件参数e)
{
对于(int k=0;k<2;k++)
{
按钮Btn=新按钮();
Btn.Name=“Btn”+k;
Btn.位置=新系统图纸点(20+(k*110),60+(20*j)*2);
Btn.尺寸=新系统图纸尺寸(90,30);
如果(k==0)
Btn.Text=“后退”;
其他的
Btn.Text=“计算”;
this.Controls.Add(Btn);
}
}
提前感谢。

只需使用:

Btn.Click += button1_Click;

private void button1_Click(object sender, EventArgs e)
{

}
只需使用:

Btn.Click += button1_Click;

private void button1_Click(object sender, EventArgs e)
{

}
像这样

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

   btn1.Click += new EventHandler(this.btn1_Click);
在VS中,您可以键入
Btn。单击+=
按tab键两次,它将为您生成方法


在VS中,您可以键入
Btn。单击+=
按tab键两次,它将为您生成方法。

如下所示增强循环:

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);
}

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

增强循环,如下所示:

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);
}

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

它表示
当前上下文中不存在名称“Btn”
@UzairAli,它应该在for循环中。就在
this.Controls.Add(Btn)之前行其工作,但问题是两个按钮使用相同的事件(返回并计算)@UzairAli看到我的答案,我演示如何区分两个按钮。@UzairAli要么照他说的做,然后检查按钮名称,或者,您需要为每个按钮使用一个新方法,这意味着您可以使用动态forit,它表示当前上下文中不存在名称“Btn”
@UzairAli,它应该在for循环中。就在
this.Controls.Add(Btn)之前行其工作,但问题是两个按钮使用相同的事件(返回并计算)@UzairAli看到我的答案,我演示如何区分两个按钮。@UzairAli要么照他说的做并检查按钮名称,要么你需要为每个按钮使用一个新方法,这意味着你可以使用一个动态按钮,这正是我想要的:)谢谢没有问题;-)顺便说一句,“这就是我想要的”的意思是把我的答案标记为已接受:-)这就是我想要的:-)谢谢没有问题;-)顺便说一句,“这就是我想要的”的意思是将我的答案标记为已接受:-)