C# 两条MessageBox退出确认消息

C# 两条MessageBox退出确认消息,c#,C#,我的确认信息有问题。。 我有两个MessageBox,第一个问“你想退出吗?” 第二个,问“你确定吗?” 我的问题是,如果我选择“是”,当第一个消息框“你想退出吗?”出现时,第二个消息框仍然会出现 namespace WindowsFormsApplication5 { public partial class Form1 : Form { private void Form1_FormClosing(Object sender, FormClosingEven

我的确认信息有问题。。 我有两个MessageBox,第一个问“你想退出吗?” 第二个,问“你确定吗?” 我的问题是,如果我选择“是”,当第一个消息框“你想退出吗?”出现时,第二个消息框仍然会出现

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {

        private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
        {
            var confirmationBox = MessageBox.Show(@"Do you want to quit", @"Title",
                                                  MessageBoxButtons.YesNo);
            var confirmationBox2 = MessageBox.Show(@"Are you sure?", @"", MessageBoxButtons.YesNo);


            if (confirmationBox == DialogResult.Yes)
            {
                if (confirmationBox2 == DialogResult.No)
                {
                    e.Cancel = true;
                }
            }

        }

    }
}

在检查第一个消息框的结果之前,不要显示第二个消息框:

var confirmationBox = MessageBox.Show(@"Do you want to quit", @"Title",
    MessageBoxButtons.YesNo);

if (confirmationBox == DialogResult.Yes)
{
    var confirmationBox2 = MessageBox.Show(@"Are you sure?", @"", MessageBoxButtons.YesNo);
    if (confirmationBox2 == DialogResult.No)
    {
        e.Cancel = true;
    }
}

另外,用这样的对话框来烦扰用户是很烦人的;考虑一下不要这样做,除非有一个真正令人信服的理由,即他们现在不应该关闭(也就是说,在一个将处于无效状态的操作的中间,或者有未保存的数据)。p> 您要做的是在if语句中显示并检查响应

if (MessageBox.Show(@"Do you want to quit", "Title", MessageBoxButtons.YesNo) == DialogResult.Yes) {
    if (MessageBox.Show(@"Are you sure?", @"", MessageBoxButtons.YesNo) == DialogResult.No) {
       e.Cancel = true; 
    }
}

与您的问题无关,但正如您所知,除非有理由(例如,字符串包含反斜杠或换行符),否则将
@
放在字符串文字之前不是常见的做法。@jlris感谢您提供此信息。这是您对其进行编码的方式,当然它会显示出来。.查看您的代码。。同时调试代码我试过了,它的工作方式应该是这样的也许你需要把第二个放在条件语句中你是对的,我还是个初学者。。我们从错误中吸取教训。哈哈。@JohnBaughman秒?根据时间戳,我在你之前10分钟发布了我的答案…@Servy Semantics…;-)是的,我的浏览器在一两分钟内做了一些奇怪的事情。。。