我看到开发人员在WinForms中做的一件事是表单/控件订阅他们自己的事件,所以你得到了
this.Load += new System.EventHandler(this.WelcomeQuickViewWF_Load);
this.Activated += new System.EventHandler(this.WelcomeQuickViewWF_Activated);
而不是
protected override void OnActivated(EventArgs e)
{
}
现在我知道第二种方式更多是面向对象,第一种方式是事件驱动,我倾向于重构以覆盖 - 是否有任何理由不这样做?我不想做的是做出不是真正需要的改变,纯粹是一种美学选择。
答案 0 :(得分:3)
On*
方法的MSDN says是在派生类中处理事件的首选技术:
OnActivated 方法还允许派生类在不附加委托的情况下处理事件。重写此方法是在派生类中处理事件的首选技术。
所以我说事件处理程序方法是非惯用的。
答案 1 :(得分:3)
通过订阅您自己的活动,您可以放弃控制当活动的其他订阅者调用您的代码时。通过重写事件引发方法,您可以完全控制何时应该调用代码。您可以在通知订阅者之前或之后调用它。在可取消的事件中也没有机会取消您的代码。
如果方法可以覆盖,请执行此操作。否则请注册,因为您别无选择。