C# 捕获c窗体上的关闭事件

C# 捕获c窗体上的关闭事件,c#,forms,C#,Forms,嘿!我不是想在这里碰碰运气,但我还有一个c问题。 我已经尝试了使用谷歌搜索到的所有可能的事件。 代码如下: private void Form1_OnClose() { MessageBox.Show("I was closed -2"); } private void Form1_Exit(object sender, EventArgs evArgs) { MessageBox

嘿!我不是想在这里碰碰运气,但我还有一个c问题。 我已经尝试了使用谷歌搜索到的所有可能的事件。 代码如下:

 private void Form1_OnClose()
        {
            MessageBox.Show("I was closed -2");
        }

        private void Form1_Exit(object sender, EventArgs evArgs)
        {
            MessageBox.Show("I was closed -1");         
        }
        private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            MessageBox.Show("I was closed 0");
        }     

        private void Form1_Closed(object sender, EventArgs e)
        {
            MessageBox.Show("I was closed 1");
        }
        private void Form1_FormClosed(Object sender, FormClosedEventArgs e)
        {

            MessageBox.Show("I was closed 2");
        }
当我执行Alt+f4或单击X按钮时,这些都不会触发任何事件。
我做错了什么?

您可能缺少实际的订阅代码,这与以下内容有关:

this.Closing += Form1_Closing;

相反,尝试重写OnXXX方法-这是做事情的首选方法。

这些方法实际上是作为事件处理程序分配的吗?转到设计模式,选择表单,然后单击属性窗口上方的小闪电。然后找到您想要关闭的事件并双击它。

错误可能是您没有在正确的时间连接事件。检查program.cs文件。它应该是这样的:

using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
namespace Test
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Form form = new Form2();
            form.Closing += form_Closing;
            Application.Run(form);
        }
        private static void form_Closing(object sender, CancelEventArgs e)
        {
            MessageBox.Show("Closing");
        }
    }
}

我刚运行了这个,事件就启动了

但我也有一个加载事件,它发生时没有任何其他事情,只有事件。加载事件必须由设计器连接。打开xxx.Designer.cs并查找这个.Load+=Form\u Load;我相信双击表单会增加这一点;或者类似于设计器文件的内容。当我开始学习c时,我对这一点感到困惑。Form1_Closed或其他名称没有什么特别之处,它只是碰巧是设计器在创建事件时选择的名称,更糟糕的是它将其隐藏在设计器文件中,如果您不知道有关分部类的信息,则可能会产生误导。您正在编辑的设计器文件和.cs文件是分部类,这意味着您的类实际上是这两个文件的组合。对于默认事件以外的事件,如果您从“属性”窗格创建事件,VS将为您连接事件。否则,你必须自己做。没有关闭事件,也没有退出事件:你可能没有选择表单本身。等等,我看到一个表单关闭,还有一个表单关闭:我想你是说表单关闭?