private void button1_Click(object sender, EventArgs e)
        {
          ...
          ...//textBox3的文本发生变化
          ...
          ...
        }private void textBox3_TextChanged(object sender, EventArgs e)
    {     .....代码执行    }
我有个程序
问题:button1_Click事件引发了textBox3的文本发生变化,textBox3的文本一旦发生变化,就开始执行textBox3_TextChanged函数了,此时button1_Click未必已经执行完,从而造成逻辑上的错误,请问,如何使得button1_Click执行完之后,才执行textBox3_TextChanged函数?

解决方案 »

  1.   

    加一个布尔变量进行控制
    button1_Click的代码执行完后置为true
    在textBox3_TextChanged里只有满足这个条件才允许执行下面的代码
      

  2.   

    行吗?textBox3_TextChanged里面遇到false,就不执行,当button1_Click的代码执行完,变量为true后,textBox3_TextChanged不会重新执行吧?
      

  3.   

    其实,你完全可以吧textBox3_TextChanged 中的代码执行 抽象成一个方法
    然后在按钮点击事件中调用这个方法,也就是文本变化之后,当然了,也可以整体放在点击事件中
    而不是像你说的,点击事件触发文本变化事件,那样只能让逻辑混乱不堪
      

  4.   

    可是,我还有其它地方需要用到textBox3_TextChanged事件,
      

  5.   

    private bool xm已完成=false;
    private void button1_Click(object sender, EventArgs e)
      {
      xml已完成=false;
      ...//textBox3的文本发生变化
      ...
      xml已完成=true;
      textBox3_TextChanged(null,null);
      }
    private void textBox3_TextChanged(object sender, EventArgs e)
      {
    if(xml已完成)
    {
      .....代码执行
    }
      }
      

  6.   

    哦,更正一下,是 xm已完成=false;
    误写成 xml已完成
      

  7.   


    bool a= true;
      private void button1_Click(object sender, EventArgs e)
      {
      a = false;
      ...//textBox3的文本发生变化
      a = true;
      textBox3_TextChanged(textBox3,e);
      }  private void textBox3_TextChanged(object sender, EventArgs e)
      {
       if(a)
        //code
      }