-1

我的确认信息有问题。我有两个 MessageBox,第一个问“你想退出吗?” 第二个,问“你确定!?” 我的问题是,如果我在第一个 MessageBox “你想退出吗?”时选择是。出现,第二个 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;
                }
            }

        }

    }
}
4

2 回答 2

6

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

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

PS 用诸如此类的对话框让您的用户烦恼很烦人;考虑不要这样做,除非有一个真正令人信服的理由不应该立即关闭它们(即在操作中间会处于无效状态或有未保存的数据)。

于 2013-01-15T19:14:44.580 回答
0

发生的事情是您正在显示消息框,然后检查每个响应。

您想要做的是在您的 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; 
    }
}
于 2013-01-15T19:24:52.760 回答