如何绕过FormClosing事件

4

I have the following code:

private void form1_closing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
    this.Hide(); 
}

我想要一个按钮来关闭表单,但不触发该事件。我该怎么做?

按钮的代码:

private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
    Application.Exit(); 
}

我希望上面的按钮可以关闭表单而不是隐藏它。
2个回答

10
//unsubscribe the mean "don't let me close" handler
this.FormClosing -= form1_closing; 
//close form
this.Close();

另一种选择是创建一个布尔字段"shouldIReallyClose"。默认值为false。当您真正想要关闭表单时,请将其设置为true。在取消事件之前,更改事件处理程序以检查布尔值。

我不明白你的意思...这就是我的代码: private void exitToolStripMenuItem_Click(object sender, EventArgs e) { this.Closing -= form1_closing;
this.Close(); }
- Hunter Mitchell
那是关闭表单的按钮。 - Hunter Mitchell
现在真的修复了(并且通过真正的编译器进行了验证)。需要使用FormClosing事件。 - Servy

0
protected override void OnFormClosing(FormClosingEventArgs e)
{
    if(!boolTrackingButtonPressed)
    {
       base.OnFormClosing(e);
    }
}

他希望大部分时间都能防止关闭,但也想有一种方法可以真正关闭它。让它始终处于关闭状态可以解决这个问题,但同时也会引发另一个问题。 - Servy
哦,第二次尝试了一下——可能不比其他解决方案更好,但除非完全错误,否则我会保留它。 - Aaron Anodide

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接