2009-07-08 10 views
9

OnLoadメソッドとLoadイベントの違いは何ですか?私はWinFormコントロールを開発しています。 Loadイベントに登録するか、OnLoadメソッドを上書きする必要がありますか?それぞれのメリットとデメリットは何ですか?OnLoadメソッドとLoadイベントの違いは?

答えて

12

OnLoadを無効にすると、イベントハンドラを呼び出すためのCPUサイクルが不要になります。

一般的なパターンは、コントロールから継承した場合、メソッドをオーバーライドすることです。それ以外の場合は、イベントを購読します。

ただし、Loadイベントが呼び出されたので、基本クラスの 'OnLoadメソッドを呼び出すことを忘れないでください。

+3

Microsoftによると、OnLoadメソッドをオーバーロードすることは、**派生**クラスのイベントを処理するための好ましいテクニックです(http://msdn.microsoft.com/en-us/library/system.windowsを参照)。 .forms.form.onload.aspx) –

+2

@TroyMoonトーマスが言ったことではありませんか? –

0

OnLoadは、Loadイベントを処理するためにVB.NETで使用されるデフォルトのイベントハンドラです。私は通常、ロードイベントにコードをアタッチする必要があるときにこのメソッドをオーバーライドします。他のPage Life Cycleイベントのデフォルト関数は、OnPreRender、OnInitなどです。

+0

おっと...あなたはwinformについて質問していたことが分かりました。ページのライフサイクルリンクを無視する。しかし、同じことが適用されます。 – regex

+0

また、C#のような他の.NET言語でも同じです(.NETフレームワーク自体は主にC#でコード化されています)。 –

4

OnLoadメソッドは、Loadイベントを発生させるメソッドです。これはフレームワーククラスの標準パターンであり、一般的に推奨されるパターンです。イベントFooの場合、そのイベントを発生させる仮想保護されたメソッドOnFooがあります。クラスの他のメソッドは直接イベントを発生させませんが、常にOnFooを呼び出します。

thisでイベントを処理する必要がある場合は、通常はOnFooを上書きする方が簡単で高速です。