Winforms订阅自己的事件

本文关键字:事件 自己的 Winforms | 更新日期: 2023-09-27 18:36:56

我看到开发人员在WinForms中做的一件常见事情是表单/控件订阅他们自己的事件,这样你就可以得到

this.Load += new System.EventHandler(this.WelcomeQuickViewWF_Load);
this.Activated += new System.EventHandler(this.WelcomeQuickViewWF_Activated);

而不是

protected override void OnActivated(EventArgs e)
{
}

现在我知道第二种方式更面向对象,第一种方式是事件驱动的,我倾向于重构为覆盖 - 有什么理由不这样做吗?我不想做的是做出并不真正需要的改变,纯粹是一种美学选择。

Winforms订阅自己的事件

通过订阅您自己的事件,您可以放弃对事件有其他订阅者调用代码的时间的控制。 通过重写事件引发方法,可以完全控制何时应调用代码。 您可以在通知订阅者之前或之后调用它。您的代码也不会在可取消事件中被取消。

如果该方法可重写,请执行此操作。否则注册,因为您别无选择。

MSDN 表示重写On*方法是处理派生类中事件的首选技术:

方法还允许派生类在不附加委托的情况下处理事件。重写此方法是在派生类中处理事件的首选技术。

所以我会说事件处理程序方法是非惯用的。