一段c#代码public  void txtMT_TextChanged(object sender, System.EventArgs e)
{if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空");  this.txtMT.Text="0"; 
 return ; MessageBox.Show("测试"); 
}}
我的本意想判断如果texMt为空的时候,就进行提示,然后阻止程序继续运行。可是实际上运行的时候MessageBox.Show("测试"); 还能继续运行
请问诸位这是什么回事?该怎么解决。谢谢。 

解决方案 »

  1.   

    我也觉得应该不应再运行Show("测试")了;
    if(this.txtMT.Text =="") 

    MessageBox.Show("不能为空"); this.txtMT.Text="0"; 
    else
    {
    MessageBox.Show("测试"); 
    }//这样好了
      

  2.   

    if(this.txtMT.Text !="") 

    }
    else
    {
        MessageBox.Show("不能为空"); this.txtMT.Text="0"; 
    return ; 
    }
      

  3.   

    因为
    this.txtMT.Text="0";  这里又再次触发TextChange事件
      

  4.   


    public  void txtMT_TextChanged(object sender, System.EventArgs e) 
    { if(this.txtMT.Text =="") 

    MessageBox.Show("不能为空"); this.txtMT.Text="0"; } 
    elseMessageBox.Show("测试"); 
      

  5.   

    …… 我还觉得我是不是逻辑思维太差了,结果打开VS2008建了个 win form程序,拉了个TextBox 起的ID 都和楼主的一样,点开 private void txtMT_TextChanged(object sender, EventArgs e)事件,在后台把楼主的代码复制了过去,直接系统就会警告 检测到无法访问到得代码
     我运行后怎么点也不会出现 return 后面的。
    逻辑上不可能运行到 
    MessageBox.Show("测试"); 
    我测试的结果也是不能运行到
      

  6.   

    因为 
    this.txtMT.Text="0";  这里又再次触发TextChange事件
    所以第一次关没有执行是返回了,但是第二次就不一样的,this.txtMT.Text的值是0,不是空所以会出现测试的文字,
    如果想改变的话可以这样写public  void txtMT_TextChanged(object sender, System.EventArgs e) 
    { if(this.txtMT.Text =="") 

    MessageBox.Show("不能为空"); this.txtMT.Text="0"; } 
    elseMessageBox.Show("测试"); 
      

  7.   

    lz是不是其他地方还有
    MessageBox.Show("测试");
    这句代码?
      

  8.   

    我也没试过,最简单的方法就是再写个else与if对应就行啦。但可不可以改return就不知道了
      

  9.   

    public  void txtMT_TextChanged(object sender, System.EventArgs e) 
    { if(this.txtMT.Text =="") 

    MessageBox.Show("不能为空"); this.txtMT.Text="0"; 
    return ; 
    }
    else  
    MessageBox.Show("测试"); 
    }
      

  10.   

    public  void txtMT_TextChanged(object sender, System.EventArgs e)
    {if(this.txtMT.Text =="")
    {
    MessageBox.Show("不能为空");this.txtMT.Text="";
    return ;
    }
    else 
    MessageBox.Show("测试");
    }
      

  11.   


    我不认为是这样,
    this.txtMT.Text="0"时,确实再次触发了TextChange事件,但是这次
    this.txtMT.Text="0"而不是this.txtMT.Text="",所以程序根本不会跑到if语句块里面去。。
      

  12.   

    public  void txtMT_TextChanged(object sender, System.EventArgs e) 
    { if(this.txtMT.Text =="") 

    MessageBox.Show("不能为空"); this.txtMT.Text="0"; 
    return ; } 
    else
    {
    MessageBox.Show("测试"); 
    } }