日期:2014-05-18  浏览次数:21225 次

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