今天第一次写这种代码
if(...)
{
    this.btnreg.Click += new System.EventHandler(this.btnreg_Click_1)
}
else if(...)
{
    this.btnreg.Click += new System.EventHandler(this.btnreg_Click_2)
}...private void btnreg_Click_1(object sender, EventArgs e)
{
    Form1 f1 = new Form1();
    f1.Show();
}
 private void btnreg_Click_2(object sender, EventArgs e)
{
     Form2 f2 = new Form2();
    f2.Show();
 }
多运行几次后,Form1和Form2都弹出来了,两个方法都运行了,请问怎么处理呢,就是每次点击按钮都对应一个click方法,不要两个Click_1和Click_2 方法都运行啊,谢谢!

解决方案 »

  1.   

    因为你多次给this.btnreg.Click绑定了事件,所以所有绑定的事件都要执行,你应该控制一下,可以通过
    -=去掉一个
      

  2.   


    if(...)
    {
      this.btnreg.Click -= new System.EventHandler(this.btnreg_Click_2)
      this.btnreg.Click += new System.EventHandler(this.btnreg_Click_1)
    }
    else if(...)
    {
      this.btnreg.Click -= new System.EventHandler(this.btnreg_Click_1)
      this.btnreg.Click += new System.EventHandler(this.btnreg_Click_2)
    }
      

  3.   

    写反了,if(...)
    {
      this.btnreg.Click -= new System.EventHandler(this.btnreg_Click_1)
      this.btnreg.Click += new System.EventHandler(this.btnreg_Click_1)
    }
    else if(...)
    {
      this.btnreg.Click -= new System.EventHandler(this.btnreg_Click_2)
      this.btnreg.Click += new System.EventHandler(this.btnreg_Click_2)
    }
      

  4.   

    if(true)
    {btnreg_Click_2(null,null);}
    else{btnreg_Click_1(null,null);}
      

  5.   

    你要确保你这个注册事件仅运行一次,否则每次注册之前要清空之前所有可能注册的事件。
    if(...)
    {
      this.btnreg.Click -= new System.EventHandler(this.btnreg_Click_1);
      this.btnreg.Click -= new System.EventHandler(this.btnreg_Click_2);
      this.btnreg.Click += new System.EventHandler(this.btnreg_Click_1);
    }
    else if(...)
    {
      this.btnreg.Click -= new System.EventHandler(this.btnreg_Click_1);
      this.btnreg.Click -= new System.EventHandler(this.btnreg_Click_2);
      this.btnreg.Click += new System.EventHandler(this.btnreg_Click_2);
    }
      

  6.   

    http://topic.csdn.net/u/20100521/11/a642110f-162f-47f9-9930-4d8e31debd89.html