3

開発者が WinForms で行っている一般的なことの 1 つは、フォーム/コントロールが独自のイベントをサブスクライブすることです。

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

それよりも

protected override void OnActivated(EventArgs e)
{
}

これで、2 番目の方法はよりオブジェクト指向であり、1 番目の方法はイベント ドリブンであり、オーバーライドに向けてリファクタリングする傾向があることがわかりました。これを行わない理由はありますか? 私がやりたくないのは、本当に必要のない、純粋に審美的な選択をすることです。

4

2 に答える 2

3

MSDN は、メソッドをオーバーライドするOn*ことが、派生クラスでイベントを処理するための推奨される手法であると述べています。

OnActivatedメソッドを使用すると、デリゲートをアタッチせずに派生クラスでイベントを処理することもできます。このメソッドをオーバーライドすることは、派生クラスでイベントを処理するための推奨される手法です。

したがって、イベント ハンドラーのアプローチは非慣用的であると言えます。

于 2012-06-11T07:11:57.933 に答える
3

独自のイベントをサブスクライブすると、そのイベントに他のサブスクライバーがいるときにコードが呼び出されるタイミングを制御できなくなります。イベント発生メソッドをオーバーライドすることで、コードを呼び出すタイミングを完全に制御できます。サブスクライバーに通知する前または後に呼び出すことができます。また、キャンセル可能なイベントでコードがキャンセルされる可能性もありません。

メソッドがオーバーライド可能な場合は、そうします。それ以外の選択肢がないので、登録してください。

于 2012-06-11T07:12:44.403 に答える