一段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("测试"); 还能继续运行
请问诸位这是什么回事?该怎么解决。谢谢。
解决方案 »
- 验证只能输入数字和逗号
- C# 发送http请求,服务器有时收不到是什么原因造成的
- C#中如何存取SQL SERVER的IMAGE字段内容
- C#在windows2000下非常诡异的saveFileDialog 问题,高手乱入
- 传真 FAXCOMLib 组件的使用问题
- 怎么用API做个区域的填充
- 如何控制操作系统里现有的服务,重起,停止,暂停....
- 窗体最大化问题
- 关于用c#做的记事本的一些问题!!!!!!!!!!!!!!!!!!!!
- 奇怪,vs 2005下写的web services怎么没有bin文件夹,.csproj也没有.
- C#中如何连接数据库,知道的朋友请解决下!
- 碰上需要多继承的时候,怎么办?
if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空"); this.txtMT.Text="0";
else
{
MessageBox.Show("测试");
}//这样好了
{
}
else
{
MessageBox.Show("不能为空"); this.txtMT.Text="0";
return ;
}
this.txtMT.Text="0"; 这里又再次触发TextChange事件
public void txtMT_TextChanged(object sender, System.EventArgs e)
{ if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空"); this.txtMT.Text="0"; }
elseMessageBox.Show("测试");
}
我运行后怎么点也不会出现 return 后面的。
逻辑上不可能运行到
MessageBox.Show("测试");
我测试的结果也是不能运行到
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("测试");
}
MessageBox.Show("测试");
这句代码?
{ if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空"); this.txtMT.Text="0";
return ;
}
else
MessageBox.Show("测试");
}
{if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空");this.txtMT.Text="";
return ;
}
else
MessageBox.Show("测试");
}
我不认为是这样,
this.txtMT.Text="0"时,确实再次触发了TextChange事件,但是这次
this.txtMT.Text="0"而不是this.txtMT.Text="",所以程序根本不会跑到if语句块里面去。。
{ if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空"); this.txtMT.Text="0";
return ; }
else
{
MessageBox.Show("测试");
} }