2009-07-06 7 views

答えて

8

少なくとも、最初のオプションでは、生成された.aspxページのクラスは、イベントハンドラの配線を担当します(したがって、イベントハンドラはProtectedである必要があります)。一方、2番目のオプションでは、コードビハインドクラスがイベントハンドラの配線を担当します(したがって、イベントハンドラはPrivateになる可能性があります)。

HandlesキーワードがVB.NETでどのように実装されているかに精通していませんが、ワイヤーアップのタイミングに影響を与える可能性があります(コードビハインドのイベントの配線はOnInitメソッドこの方法は、マークアップを通して配線するよりも、ページサイクルの異なる時間に、そしてそれが重要ないくつかのあいまいなケース)。

私は個人的にHandlesメソッドを使用することをお勧めします(OnInitのオーバーライドではC#の+=を使用することをお勧めします)。これにより、コンパイラは、メソッドが存在し、継承クラスに不必要にさらされる必要がないことを検証できます。コンパイルすることは、リファクタリングツールを使用したり、用途などを調べる際にも役立ちます。

+0

bdukesが書いたことを詳しく説明するには、まずASPXファイルがC#クラスにどのように変換され、どのようにコードビハインドクラスに関連するのかを理解する必要があります。あなたが理解すれば、あなたは、あなたが概説した2つの方法の間に「実質的に」違いがないことを知ります。 – SolutionYogi

+0

私はそれが数年経っていることを知っていますが、タイミングの違いがあればそれを広げることができますか? – jmoreno

0

両方ともイベントハンドラを追加します。ハンドルはVB.Netで利用可能で、C#では利用できません。

また、ページのAddHandlerメソッドを使用してコード内にイベントを追加することもできます。

0

最初の例は、c#コードを使用しているページがイベントを関数に登録する方法の例です。この場合、定義に一致するメソッドが必要です。

2番目の方法は、イベントを関数にアタッチするvb.netの方法です。

+0

C#またはVB.NETに関するものではありません。私はあなたのコードビハインドファイルにイベントハンドラを作成することとあなたのASPXページにOnClickを置くことの違いについて、より多くの質問があると思う。 – SolutionYogi

1

大きな違いはありません。どちらもAddHandlerキーワードを使用するのと同じです。 OnClick属性を使用するとC#を使用するASP.NETコードとの互換性が向上し、HandlesキーワードはWindowsフォームVB.NETコードとの互換性が向上します。