首页 > 解决方案 > 覆盖 OnFormclosure 方法

问题描述

我来自这个链接
,我需要做同样的事情,但我需要将该代码放在课堂上。这是我班上的代码。

    public class MyForm : Form
{

    protected override void OnFormClosing(FormClosingEventArgs e)
    {
        base.OnFormClosing(e);

        if (e.CloseReason == CloseReason.WindowsShutDown) return;

        // Confirm user wants to close
        switch (MessageBox.Show(this, "Are you sure you want to close?", "Closing", MessageBoxButtons.YesNo))
        {
            case DialogResult.No:
                e.Cancel = true;
                break;
            default:
                break;
        }
    }


}

当我从表单设计代码中删除此函数并将其放入类中时,它看起来像编译器无法识别它。我认为问题不在代码中

更新:Lennar,感谢您的回答,我知道如何添加事件,但是当我在课堂上有代码时应该如何实现?

标签: c#classoverriding

解决方案


此方法是一个事件处理程序:

protected override void OnFormClosing(FormClosingEventArgs e)
{
    //code here
}

因为它是表单的事件处理程序,它通常会从 Designer.cs 中引发。因此,您需要做的是在表单关闭时引发事件。去做这个:

  1. 转到表单的属性

  2. 点击活动图标:事件图标

  3. 转到 Behavior 部分并双击 FormClosing:表单关闭事件

完成此操作后,您应该会在代码中看到事件处理程序的存根,您可以在其中放置所需的函数体,并且您的代码应该可以工作。


推荐阅读