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按钮只点一次就行?

解决方案 »

  1.   

    你代码有问题,应该改为: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;
    }
      

  2.   

    楼主难道不明白是为什么吗,
    主要就因为你在IF语句里面直接给判断了,而不是在外面写的判断,
    像楼主写的你没有像1楼写的那样将result保存下来,所以你的3个if语句是都要执行的,你的==后面的每次判断都是一个新值
      

  3.   

      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;
                }
                   
      

  4.   

    mjjzg 升级了嘛,记得要散分啊。哈哈!