应用程序在 DialogResult 上关闭

Nic*_*cky 2 c# user-interface messagebox dialogresult visual-studio

我有一个 C# GUI 应用程序。当用户单击红色的“X”(用于关闭应用程序)时,我想显示一条消息并询问他是否真的想关闭它。

我找到了一个解决方案:

        DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "SomeTitle", MessageBoxButtons.YesNo);
        if (dialog == DialogResult.Yes)
        {
            Application.Exit();
        }else if (dialog == DialogResult.No)
        {
          //don't do anything
        }
Run Code Online (Sandbox Code Playgroud)

当用户单击“是”时,应用程序应完全终止。( Application.Exit() 为此目的正确吗?)

当用户单击“否”时,DialogResult/MessageBox 应关闭,但应用程序应保持打开状态。然而,它关门了!!

我怎样才能避免这种情况?

顺便说一句:我使用 Visual Studio 2010 和 Winforms。

小智 5

使用Form 中的FormClosing事件和FormClosingEventArgs取消该过程。

例子:

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        DialogResult dialog = dialog = MessageBox.Show("Do you really want to close the program?", "SomeTitle", MessageBoxButtons.YesNo);
        if (dialog == DialogResult.No)
        {
            e.Cancel = true;
        }
    }
Run Code Online (Sandbox Code Playgroud)