【问题标题】:""object" has no definition for "OnFormClosing" Error on Overriding a System Method""object" 没有定义 "OnFormClosing" 覆盖系统方法时的错误
【发布时间】:2017-09-26 13:40:42
【问题描述】:

我只是试图覆盖“OnFormClosing()”方法,以便在关闭应用程序之前记录一个简单的字符串。

protected override void OnFormClosing(FormClosingEventArgs e)
    {
        log.Info("File closed");
        base.OnFormClosing(e); 
    }

为什么会出现这个错误

“object”没有“OnFormClosing”的定义

关于

base.OnFormClosing(e);

我正在尝试在我的 static class Programm{} 中实现此功能,但即使在我的项目中的所有其他公共类中,如果我尝试在那里实现此方法,也会遇到相同的错误。

知道可能是什么问题吗?

【问题讨论】:

  • OnFormClosingForm 类型的事件,而不是您的类型。
  • "关闭应用程序之前" - 查看Program 类内部,您可以在Application.Run(new SomeForm()); 行之后进行此类记录。
  • 我不明白你在说什么。我正在关注此示例 link 。为什么这在我的项目中不起作用?

标签: c# winforms


【解决方案1】:

问题的出现是因为类Program(您尝试覆盖此方法的地方)继承自类object,而不是继承自类Form。类对象没有OnFormClosing 方法。如果您查看类的声明,它不会显示任何继承

static class Program //<- here is no inheritance specified!
{

您需要选择您的窗口Form 类之一并将代码放在那里。因为创建的winform会继承Forms类:

public partial class Form1 : Form
{

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2013-10-22
    相关资源
    最近更新 更多