【问题标题】:How to bypass FormClosing event如何绕过 FormClosing 事件
【发布时间】:2012-05-16 20:42:47
【问题描述】:

我有以下代码:

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

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

按钮的代码:

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

我希望上面的按钮关闭表单而不是隐藏它。

【问题讨论】:

    标签: c# .net winforms formclosing


    【解决方案1】:
    //unsubscribe the mean "don't let me close" handler
    this.FormClosing -= form1_closing; 
    //close form
    this.Close();
    

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

    【讨论】:

    • 我没有关注你...这就是我所拥有的:private void exitToolStripMenuItem_Click(object sender, EventArgs e) { this.Closing -= form1_closing; this.Close(); }
    • 那是关闭表单的按钮
    • 现在真的修复了(并用真正的编译器验证)。需要使用FormClosing 事件。
    【解决方案2】:
    protected override void OnFormClosing(FormClosingEventArgs e)
    {
        if(!boolTrackingButtonPressed)
        {
           base.OnFormClosing(e);
        }
    }
    

    【讨论】:

    • 他大部分时间都想阻止关闭,但是有一个方法可以让他真正关闭它。让它实际上一直关闭可以解决这个问题,但不能解决另一个问题。
    • 哦,再试一次 - 可能并不比其他解决方案好,但除非它完全错误,否则不要这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多