Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DialogResult上的应用程序关闭_C#_Visual Studio_User Interface_Messagebox_Dialogresult - Fatal编程技术网

C# DialogResult上的应用程序关闭

C# DialogResult上的应用程序关闭,c#,visual-studio,user-interface,messagebox,dialogresult,C#,Visual Studio,User Interface,Messagebox,Dialogresult,我有一个C#GUI应用程序。当用户点击红色的“X”(用于关闭应用程序)时,我想显示一条消息并询问他是否真的想关闭它 我找到了一个解决方案: DialogResult dialog = MessageBox.Show("Do you really want to close the program?", "SomeTitle", MessageBoxButtons.YesNo); if (dialog == DialogResult.Yes) {

我有一个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
        }
当用户单击“是”时,应用程序应完全终止。(Application.Exit()是否正确用于此目的?)

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

我怎样才能避免这种情况


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

使用程序窗口的窗体关闭事件。如果用户单击“否”,则可以将
e.Cancel
设置为
true

我猜您正在使用
FormClosed
。你是吗?那就太晚了。

试试这个

        this.FormClosing += new FormClosingEventHandler(delegate(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("Do you really want to exit this application?", MessageBoxButtons:=MessageBoxButtons.YesNo) == DialogResult.No)
            {
                e.Cancel = true;
            }
        });

使用表单中的FormClosing事件和取消流程

例如:

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

参考Mudu的答案

基本上,除非您为
MessageBox.Show()
指定其他参数,否则无法从默认的
MessageBox
中获得除
DialogResult.Ok
之外的任何结果

您发布的代码(减去您的小错误
dialog=dialog=
)完全符合我的预期


另外:
Application.Exit()
是关闭应用程序的正确方法:)

不要这样做;这真的很烦人。我一直希望在这样一个对话框上有一个“是的,该死!”的按钮,这样它就再也不会问我这样的傻事了,但我还没见过。将this.DialogResult属性设置回None以防止其关闭。很抱歉,这没有多大帮助。这是实现这一目标的必要条件,因此我提出这一问题;)好的,我希望有3个几乎相同的回答:(.e是FormClosingEventArgs.e.cancel意味着取消formclosing,因此它将重新打开。我将此代码用于我的第一个表单。它工作正常。我在该应用程序中再次将此代码用于我的第二个表单。但它工作不正常。两次出现确认框退出应用程序。为什么?很好。FormClo在事件列表中的FormClosing之后调用sed。
    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;
        }
    }