读书人

为什么MessageBox的Yes,No要点两次而C

发布时间: 2012-01-11 22:28:46 作者: rapoo

为什么MessageBox的Yes,No要点两次而Cancel只点一次就行?

C# code
if (MessageBox.Show("是否保存", "友情提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Cancel){    MessageBox.Show("取消");    return;}else if (MessageBox.Show("是否保存", "友情提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)//奇怪要点两下才有反应{    MessageBox.Show("是");    return;}             else if(MessageBox.Show("是否保存", "友情提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.No)//奇怪要点两下才有反应{    MessageBox.Show("否");    return;}

大家可以做下这个实验,Yes,No按钮要点两次而Cancel按钮只点一次就行?

[解决办法]
你代码有问题,应该改为:
C# code
DialogResult result = MessageBox.Show("是否保存", "友情提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);if (result == DialogResult.Cancel){    MessageBox.Show("取消");    return;}else if (result == DialogResult.Yes){    MessageBox.Show("是");    return;}else if (result == DialogResult.No){    MessageBox.Show("否");    return;}
[解决办法]
楼上,正解!
[解决办法]
楼主难道不明白是为什么吗,
主要就因为你在IF语句里面直接给判断了,而不是在外面写的判断,
像楼主写的你没有像1楼写的那样将result保存下来,所以你的3个if语句是都要执行的,你的==后面的每次判断都是一个新值
[解决办法]
switch (MessageBox.Show("是否保存", "友情提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1))
{
case DialogResult.Cancel:
MessageBox.Show("取消");
break;
case DialogResult.Yes :
MessageBox.Show("是");
break;
case DialogResult .No :
MessageBox.Show("否");
break;
}

读书人网 >C#

热点推荐