关闭按钮启动main_load事件

时间:2018-04-28 00:21:34

标签: c#

我的WinForm应用程序中有多个表单。

第一个表单(Form1)用于身份验证,而第二个表单(Main)用作打开其他表单的应用程序的主仪表板。

当我处于设计师模式时,我双击主窗体中的关闭按钮以生成关闭事件,但会发生奇怪的事情。

而不是:

private void Main_FormClosing(object sender, FormClosingEventArgs e)

点击生成的事件是:

private void Main_Load(object sender, EventArgs e)

我不明白为什么。

我尝试手动输入方法,如下所示:

 private void Main_FormClosing(object sender, FormClosingEventArgs e)
        {
            DialogResult dialog = MessageBox.Show("Do you really want to quit?", "Exit", MessageBoxButtons.YesNo); 

            if (dialog == DialogResult.Yes)
            {
                Application.Exit();
            } else if (dialog == DialogResult.No)
            {
                e.Cancel = true;
            }

        }

但它根本没有关闭关闭按钮。

任何想法为什么?

2 个答案:

答案 0 :(得分:0)

您需要查找并删除主窗体Close buttton的click事件的事件分配。该代码将位于 Main.Designer.cs 模块中。查找此代码的所有实例:

this.FormClosing += ...

删除该分配(或那些分配,如果有多个分配),然后返回到表单设计器,双击主窗体的关闭按钮,Visual Studio将创建并转到FormClosing事件的方法处理程序

答案 1 :(得分:0)

Main()的表单构造函数中,您可以像这样绑定FormClosing事件的事件处理程序。

public Main()
{
    // other startup tasks here

    this.FormClosing += Main_FormClosing;
}

private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
    var dialogResult = MessageBox.Show("Do you really want to quit?", "Exit", MessageBoxButtons.YesNo); 

    if (dialogResult == DialogResult.No)
    {
        e.Cancel = true;
        return;
    }

    Application.Exit();

}