使用是否消息框退出我的应用程序

时间:2017-11-07 19:51:54

标签: c# winforms

我正在使用下面的代码退出我的整个应用程序应用程序,但是没有问题messagebox我的问题是有时我收到了两次消息,有时我把它正确显示为一条消息显示..

任何人都可以帮助我为什么会发生这种情况?

    private void AppClose_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void F0100_FormClosing(object sender, FormClosingEventArgs e)
    {
        DialogResult result;
        result = MessageBox.Show("Are you sure you want to exit?", "Exit Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (result == DialogResult.Yes)
        {
            //Environment.Exit(1);
            Application.Exit();
        }
        else
        { e.Cancel = true; }
    }

2 个答案:

答案 0 :(得分:1)

我假设相关表单是您的主要表单,即您将此Form作为Application.Run(new Form1());

启动

如果是这种情况,通常您不需要在Application.Exit()的{​​{1}}分支下执行Yes。所以你的代码应该是下面的代码

FormClosing

多余的private void F0100_FormClosing(object sender, FormClosingEventArgs e) { if (e.CloseReason != CloseReason.UserClosing) return; DialogResult result; result = MessageBox.Show("Are you sure you want to exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result != DialogResult.Yes) { e.Cancel = true; } } 电话会产生额外的Application.Exit()事件

注意:您还应该检查FormClosing,这样当用户注销或终止该过程时,您就不会创建额外的弹出窗口。

答案 1 :(得分:0)

然后this answer可能对你有帮助。基本上,您需要使用您注释掉的那个:Environment.Exit(0)Application一个优雅的尝试退出尝试关闭表单。您的表单仍处于打开状态,因此会收到第二次FormClosing电话。这完全取决于时间,但是我认为大多数时候你会看到提示两次。