Visual C#完全忽略了FormClosing事件

时间:2016-05-16 03:23:35

标签: c# visual-studio

我的应用程序似乎完全跳过Form_Closing事件,我不确定原因。我试图通过使用e.cancel调试它并在它关闭时显示一个消息框,但消息框从未显示,并且e.cancel不会取消它。我的代码是

    public void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (isClosed == false)
        {
            e.Cancel = true;
            base.OnFormClosing(e);
            this.Hide();
            this.WindowState = FormWindowState.Minimized;
        }
        else
        {
            Application.Exit();
        }
    }

谢谢:)

2 个答案:

答案 0 :(得分:1)

您的方法具有适合FormClosing事件处理程序的签名,但您调用的base.OnFormClosing仅适用于OnFormClosing覆盖。

选一个。例如,覆盖看起来像

    protected override void OnFormClosing(FormClosingEventArgs e)
    {
        if (isClosed == false)
        {
            e.Cancel = true;
            base.OnFormClosing(e);
            Hide();
            WindowState = FormWindowState.Minimized;
        }
        else
        {
            Application.Exit();
        }
    }

答案 1 :(得分:-1)

首先只使用消息框确定您正确的事件 然后检查isclosed的值,因为我怀疑它是真的。