在c#表单上捕获close事件

时间:2009-02-11 15:57:02

标签: c# forms

喂!我不是想在这里推动我的运气,但我有另一个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按钮时,其中没有一个触发任何内容。 我在这里做错了什么?

3 个答案:

答案 0 :(得分:12)

您可能缺少实际的订阅代码,这是以下几点:

this.Closing += Form1_Closing;

相反,请尝试覆盖 OnXXX 方法 - 这是首选方法。

答案 1 :(得分:2)

错误可能是您没有在正确的时间连接事件。检查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");
        }
    }
}

我刚刚运行了这个并且事件被解雇了。

答案 2 :(得分:1)

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