Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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# 给我一个关于FormClosing事件的提示_C#_Winforms - Fatal编程技术网

C# 给我一个关于FormClosing事件的提示

C# 给我一个关于FormClosing事件的提示,c#,winforms,C#,Winforms,我有一张主表格。我可以通过使用关闭按钮(右上角)或单击菜单项miExit来关闭它 我的问题是,当我单击miExit并回答“OK”时,它会显示messageBox两次。我怎样才能修好它?(我理解为什么它会显示两次,但我如何才能避免它?) formclosing和miExit单击都必须为messagebox提供“退出?”提示 将miExit\u Click事件处理程序更改为只调用Close而不执行任何操作,然后让FormClosing处理程序以任何方式处理它。将miExit\u Click事件处理程

我有一张主表格。我可以通过使用关闭按钮(右上角)或单击菜单项miExit来关闭它

我的问题是,当我单击miExit并回答“OK”时,它会显示messageBox两次。我怎样才能修好它?(我理解为什么它会显示两次,但我如何才能避免它?)

formclosing和miExit单击都必须为messagebox提供“退出?”提示


miExit\u Click
事件处理程序更改为只调用
Close
而不执行任何操作,然后让
FormClosing
处理程序以任何方式处理它。将
miExit\u Click
事件处理程序更改为只调用
Close
而不执行任何操作,然后让
FormClosing
处理程序处理它无论哪种方式,它都被关闭。

在这里应用。您有表单关闭的冗余代码

你自己重复一遍,在这里申请。您有表单关闭的冗余代码


“你自己重复一遍

更改
miExit\u单击
handlier即可呼叫

Application.Exit()
在所有打开的表单上自动调用
FormClosing
事件。是的,这些表单可以通过将其
FormClosingEventArgs
cancel
属性设置为
true
来取消退出


另外,如果您不相信我的话,我链接到了
Application.Exit()
的文档,
FormClosing
位是备注下的第一个要点。

miExit\u单击更改为只调用

Application.Exit()
在所有打开的表单上自动调用
FormClosing
事件。是的,这些表单可以通过将其
FormClosingEventArgs
cancel
属性设置为
true
来取消退出


另外,如果你不相信我,我链接到了
Application.Exit()
的文档,
FormClosing
位是备注下的第一个要点。

用“this.Close();”替换miExit\u Click的内容这将依次调用MainForm\u FormClosing,这样您就不需要该代码两次。作业完成

将miExit_Click的内容替换为“this.Close();”这将依次调用MainForm\u FormClosing,这样您就不需要该代码两次。工作完成

partial class MainForm : Form
{
    void MainForm_FormClosing(object sender, FormClosingEventArgs e)
    {
        DialogResult dr = MessageBox.Show("Exit ?", "Exit", MessageBoxButtons.OKCancel,         MessageBoxIcon.Question);

        if (dr == DialogResult.OK)
        {
            SaveSettings();
        }
        else
        {
            e.Cancel = true;
        }
    }

    void miExit_Click(object sender, EventArgs e)
    {
        DialogResult dr = MessageBox.Show("Exit ?", "Exit", MessageBoxButtons.OKCancel,             MessageBoxIcon.Question);

        if (dr == DialogResult.OK)
        {
    SaveSettings();

            Application.Exit();
        }
    }

    void SaveSettings()
    {
    // save user settings to file ...
    }
}