C#按钮仅在第二次单击时启动
我做了一个简单的windows窗体。我的按钮只在第二次点击时启动。为什么呢C#按钮仅在第二次单击时启动,c#,.net,winforms,C#,.net,Winforms,我做了一个简单的windows窗体。我的按钮只在第二次点击时启动。为什么呢 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); } pr
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);
}
有人能解释一下吗。因为你在第一次点击时就把它连接起来了:
this.button1.Click += new System.EventHandler(this.dosomething);
因此,至少需要单击一次才能获得要激发的dosomething
方法
这种方法的另一个问题是,如果抛出异常,您可能会多次挂接此事件处理程序。我知道您正在
dosomething
事件中删除它,但最好只在构造函数中连接此事件。这正是您告诉它要做的
this.button1.Click += new System.EventHandler(this.dosomething);
这一行向click事件添加了一个处理程序,该事件将在以后的所有单击中运行。正如其他人所说,您仅在第一次单击时连接事件 将该行放入form_load事件中
this.button1.Click += new System.EventHandler(this.dosomething);
您试图做的是在单击按钮后从按钮中删除绑定事件。您可以通过以下方式直接调用事件:
private void button1_Click(object sender, EventArgs e)
{
dosomething(null, null)
}
若你们想按钮只工作一次,你们可以取消订阅点击事件
private void button1_Click(object sender, EventArgs e)
{
DoSomething();
button1.Click -= button1_Click;
}
为什么不直接按按钮1_click调用doSomething?对不起,那不是snmpconn。在-=eventhandler中是dosomething它在firs click中仍然不起作用。它只在第二个ClickPerfect上起作用。非常感谢。我只是windows窗体的初学者,所以可能会问一些更愚蠢的问题。没关系。我们都需要从哪里开始。您可以直接在
按钮中调用this.dosomething
,单击也请在完成此问题后标记答案