MessageBox.Show的返回值问题

tianlu50 2013-07-30 11:41:41
我在一个函数中写了多个if语句,当其中一个if语句满足条件的时候,弹出一个MessageBox:
if (strSemenID.Substring(0, 5) != strSuperiorDepID)
{
if (MessageBox.Show("该精液不属于指定的供精点,无法入库!", "提示:", MessageBoxButtons.OK, MessageBoxIcon.Warning) == DialogResult.OK)
{
TB_CurSemenIDP.Text = string.Empty;
TB_CurSemenIDP.Focus();
return;
}
}

if (strSemenID == dt.Rows[0]["SemenID"].ToString())
{
if (MessageBox.Show("该精液已销售!", "提示:", MessageBoxButtons.OK, MessageBoxIcon.Warning) == DialogResult.OK)
{
TB_CurSemenIDP.Text = string.Empty;
TB_CurSemenIDP.Focus();
return;
}
}

if (strSemenID == dt.Rows[1]["SemenID"].ToString())
{
if (MessageBox.Show("该精液已入库!", "提示:", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK)
{
TB_CurSemenIDP.Text = string.Empty;
TB_CurSemenIDP.Focus();
return;
}
}

如果第一个if语句满足条件,弹出MessageBox没有问题,点击确定按钮后,MessageBox.Show返回DialogResult.OK,然后执行下面的语句,
但是当第二个或是第三个If语句满足条件的时候,MessageBox一闪就消失了,调试了一下发现,MessageBox.Show的返回值是DialogResult.OK,按理说应该是当我点击了确定按钮以后,MessageBox.Show才返回DialogResult.OK,但是现在却是我没有点击确定按钮,它就已经返回DialogResult.OK了,这是怎么回事
...全文
1297 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2013-08-08
  • 打赏
  • 举报
回复
目测撸主的程序是做配种的
tianlu50 2013-08-08
  • 打赏
  • 举报
回复
补充一点:我单步调试的结果就是MessageBox.Show直接返回MessageBoxButtons.OK,然后执行大括号里的代码并return
tianlu50 2013-08-08
  • 打赏
  • 举报
回复
还有就是,不管使用MessageBoxButtons.OK,MessageBoxButtons.OKCancle还是MessageBoxButtons.YesNo,都会遇到上面的问题
tianlu50 2013-08-08
  • 打赏
  • 举报
回复
大家理解错了我的意思,我程序的本意是这样的: 假如第二个if语句条件成立,弹出一个MessageBox,点击了确定按钮,返回DialogResult.OK后,执行大括号里面的语句,最后return, 但是现在是问题是:如果第一个if语句成立,弹出MessageBox,点击确定按钮都没有问题, 但是如果是第二个或第三个if语句成立,MessageBox弹出以后,我没有点击确定按钮,程序直接返回DialogResult.OK,自动执行大括号里面的语句并return,看起来的效果就是MessageBox一闪就没有了 奇怪的是,如果我在两个if语句之间再加上一句代码:MessageBox.Show("");就恢复正常了 后来我不用MessageBox,自己做了一个窗体开实现信息提示的功能,也遇到上面一样的问题:我在窗体上放了一个按钮,点击按钮后,关闭该窗体,但是窗体弹出来以后,自动的就关闭了,一闪就消失
nikolaichow 2013-08-08
  • 打赏
  • 举报
回复
搞那么多messagebox干嘛,是不是应该在if改变成elseif
Regan-lin 2013-07-31
  • 打赏
  • 举报
回复
if (MessageBox.Show("该精液不属于指定的供精点,无法入库!", "提示:", MessageBoxButtons.OK, MessageBoxIcon.Warning) == DialogResult.OK) 感觉你这样写怪怪的,一般都是弹一个对话窗口来判断ok的,你这样写这个messagebox它也就判断条件是否成立,你又没让它固定显示,它成立就执行里面的代码,你试下用个对话弹出,再messagebox提示,应该就不会出现你上面的问题的
tianlu50 2013-07-31
  • 打赏
  • 举报
回复
跟Timer无关,几个Timer我都禁用了,还是出现这个问题,程序其他地方我检查了一下,没有触发回车的情况啊
tianlu50 2013-07-31
  • 打赏
  • 举报
回复
估计有可能,我用了几个Timer,我检查一下是不是在Timer里触发了回车
threenewbee 2013-07-31
  • 打赏
  • 举报
回复
怎么可能,是不是别的地方会无意触发回车按键。
糖果茜茜 2013-07-31
  • 打赏
  • 举报
回复
满足一个条件,弹出一个对话框,就return掉了,后面的就不执行了呀。
feiniao19830822 2013-07-31
  • 打赏
  • 举报
回复
引用
按理说应该是当我点击了确定按钮以后,MessageBox.Show才返回DialogResult.OK
你的MessageBox使用的是MessageBoxButtons.OK。不管点击的是确定,还是关闭对话框,结果都会返回DialogResult.OK。
宝_爸 2013-07-31
  • 打赏
  • 举报
回复
我理解错了,是第二个,第三个条件中的messagebox不显示。 我也觉得有点奇怪,是不是其他线程,关闭了窗口啥的。 单步跟踪下,看看能不能重现。
宝_爸 2013-07-31
  • 打赏
  • 举报
回复
你Return了,怎么会执行下面的语句呢?

110,539

社区成员

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

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

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