为什么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;
}