C # return

fengyoujie 2009-12-12 08:27:09

一段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("测试"); 还能继续运行
请问诸位这是什么回事?该怎么解决。谢谢。

...全文
207 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoulun13688 2009-12-13
  • 打赏
  • 举报
回复
public void txtMT_TextChanged(object sender, System.EventArgs e)
{

if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空");

this.txtMT.Text="0";
return ;
}
else
MessageBox.Show("测试");
}
fellatioyzx 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 duping9626 的回复:]
因为
this.txtMT.Text="0";  这里又再次触发TextChange事件
[/Quote]

厉害,要是不说我都没看出来,唉,弱智了。。。。
long502481209 2009-12-13
  • 打赏
  • 举报
回复
我也没试过,最简单的方法就是再写个else与if对应就行啦。但可不可以改return就不知道了
zhh2008p 2009-12-13
  • 打赏
  • 举报
回复
没试过。。
gao19870901 2009-12-13
  • 打赏
  • 举报
回复
public void txtMT_TextChanged(object sender, System.EventArgs e)
{

if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空");

this.txtMT.Text="0";
return ;

}
else
{
MessageBox.Show("测试");
}

}
yzk2008 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 duping9626 的回复:]
因为
this.txtMT.Text="0";  这里又再次触发TextChange事件
[/Quote]

我不认为是这样,
this.txtMT.Text="0"时,确实再次触发了TextChange事件,但是这次
this.txtMT.Text="0"而不是this.txtMT.Text="",所以程序根本不会跑到if语句块里面去。。
jaydawson 2009-12-13
  • 打赏
  • 举报
回复
重复触发TextChange事件。。
hz441667168 2009-12-13
  • 打赏
  • 举报
回复
public  void txtMT_TextChanged(object sender, System.EventArgs e)
{

if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空");

this.txtMT.Text="";
return ;
}
else 
MessageBox.Show("测试");
}
aimeast 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 duping9626 的回复:]
因为
this.txtMT.Text="0";  这里又再次触发TextChange事件
[/Quote]
但是一样执行不到后面的那个“测试”

估计是12楼说的,还有哪里有“测试”

建议楼主跟踪一下代码,看看程序是怎么执行的。
gghlkk 2009-12-12
  • 打赏
  • 举报
回复
lz是不是其他地方还有
MessageBox.Show("测试");
这句代码?
Jave.Lin 2009-12-12
  • 打赏
  • 举报
回复
真的没有试过。
苏飞论坛 2009-12-12
  • 打赏
  • 举报
回复
因为
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";



}
else

MessageBox.Show("测试");
}

TigerBiao 2009-12-12
  • 打赏
  • 举报
回复
牛B》》》》》》》》》》》》》》》》
ghoul84 2009-12-12
  • 打赏
  • 举报
回复
…… 我还觉得我是不是逻辑思维太差了,结果打开VS2008建了个 win form程序,拉了个TextBox 起的ID 都和楼主的一样,点开 private void txtMT_TextChanged(object sender, EventArgs e)事件,在后台把楼主的代码复制了过去,直接系统就会警告 检测到无法访问到得代码
我运行后怎么点也不会出现 return 后面的。
逻辑上不可能运行到
MessageBox.Show("测试");
我测试的结果也是不能运行到
ytc666 2009-12-12
  • 打赏
  • 举报
回复
重复触发了change事件
bancxc 2009-12-12
  • 打赏
  • 举报
回复
4楼说的 有道理
红街咖啡 2009-12-12
  • 打赏
  • 举报
回复

public void txtMT_TextChanged(object sender, System.EventArgs e)
{

if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空");

this.txtMT.Text="0";



}
else

MessageBox.Show("测试");
}

duping9626 2009-12-12
  • 打赏
  • 举报
回复
因为
this.txtMT.Text="0"; 这里又再次触发TextChange事件
风之影子 2009-12-12
  • 打赏
  • 举报
回复
if(this.txtMT.Text !="") 
{
}
else
{
MessageBox.Show("不能为空");

this.txtMT.Text="0";
return ;
}
沐浴-vip 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 momingchuangru 的回复:]
我也觉得不应再运行Show("测试")了;
if(this.txtMT.Text =="")
{
MessageBox.Show("不能为空");

this.txtMT.Text="0";
}
else
{
MessageBox.Show("测试");
}//这样好了
[/Quote]
哎,打错了
加载更多回复(1)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧