C#按钮仅在第二次单击时触发

use*_*720 2 .net c# winforms

我做了一个简单的窗体.我的按钮仅在第二次点击时触发.这是为什么 ?

private void button1_Click(object sender, EventArgs e)
{
    //button1.Enabled = false; will disable the button before the event is fired
    this.button1.Click += new System.EventHandler(this.dosomething);
}

private void dosomething(object sender, System.EventArgs e)
{
    listBox1.Items.Add("Initializing :" + cart + "...");
    this.button1.Click -= new System.EventHandler(this.dosomething);
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下.

SLa*_*aks 10

这正是你告诉它要做的.

   this.button1.Click += new System.EventHandler(this.dosomething);
Run Code Online (Sandbox Code Playgroud)

此行为click事件添加了一个处理程序,该事件将针对以后的所有点击运行.


Rém*_*émi 10

正如其他人所说,你只在第一次点击时挂钩事件.

将此行放在form_load事件中

this.button1.Click += new System.EventHandler(this.dosomething);
Run Code Online (Sandbox Code Playgroud)