Form1_Closing方法分配给表单关闭事件

本文关键字:表单 事件 分配 Closing 方法 Form1 | 更新日期: 2023-09-27 18:30:33

我定义了以下方法,以便在表单关闭时调用

private void TimeKeeper_Closing(object sender, EventArgs e)

但是,当我尝试在表单属性的"事件"部分中分配它时,它不会显示在列表中。我需要做些什么才能让它出现在那里吗?

编辑:对不起,最初发布了错误的方法...

Form1_Closing方法分配给表单关闭事件

关闭事件已过时,它可以追溯到 .NET 1.x。 Microsoft搞砸了那个,它在.NET 2.0中被FormCloseing事件取代了。 这告诉您更多关于表单关闭的原因。 e.CloseReason非常重要,您不想阻止Windows关闭。

这就是为什么你找不到它,你不应该再使用它了。 请注意,您接受的答案如何阻止程序编译。 您可能自己发现了 FormClosing 事件。

不妨全副武装地指出,一个班级听自己的事情是多么愚蠢。 事件适用于其他代码。 它们在设计器中工作得很好,这就是为什么你最终会写这样的代码。 但是理智的做法是覆盖该方法:

    protected override void OnFormClosing(FormClosingEventArgs e) {
        if (e.CloseReason == CloseReason.UserClosing) {
            // Some code that might set e.Cancel = true
            //...
        }
        base.OnFormClosing(e);
    }

这有很多优点,除了忘记与设计器订阅事件的典型损失之外,派生类可以通过将 e.Cancel 设置回 true 来简单地改变此处做出的决定。

您必须将 EventArgs

更改为 FormClosesingEventArgs

private void TimeKeeper_Closing(object sender, FormClosingEventArgs e)