このコードはの一部ですAjaxControlToolkitSampleSite
。正確には、それはAsyncFileUpload
コントロールにあります:
AsyncFileUpload1.UploadedComplete += new EventHandler<AsyncFileUploadEventArgs>(AsyncFileUpload1_UploadedComplete);
これをVB.NETに変換するにはどうすればよいですか?
このコードはの一部ですAjaxControlToolkitSampleSite
。正確には、それはAsyncFileUpload
コントロールにあります:
AsyncFileUpload1.UploadedComplete += new EventHandler<AsyncFileUploadEventArgs>(AsyncFileUpload1_UploadedComplete);
これをVB.NETに変換するにはどうすればよいですか?
どうぞ:
AddHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete
または、コード内でAsyncFileUpload1
、左側のドロップダウン リスト (コードのすぐ上) からコントロールを選択UploadComplete
し、右側のドロップダウン リストからイベントを選択することもできます。
Handles
これにより、VB宣言を使用して正しいシグネチャを持つイベント ハンドラーが自動的に作成されます。
他の人は、文字通りVB に変換event+=
する方法を示しています。AddHandler
ただし、似ているにもかかわらず、VB と C# は異なる言語であり、優れた C# コードは、文字通りに翻訳すると、優れた VB コードではない可能性があります。たとえば、VB では、固定イベント ハンドラーを ASP.NET コントロールにアタッチする標準的な方法は、次のHandles
キーワードを使用することです。
Protected Sub AsyncFileUpload1_UploadedComplete(sender As Object, _
e As AsyncFileUploadEventArgs) _
Handles AsyncFileUpload1.UploadedComplete
' Your event handler code is here
End Sub
そのコードをコンパイルする C# プロジェクトに入れることができれば、そのプロジェクトをSharpDevelopで VB.NET に変換できます。これはおそらく、C# と VB.NET の間で変換する最良の方法です。
また、ILSpyは、C# で記述されたコンパイル済みの dll を VB.NET に変換できます。
これを行うには 2 つの方法があります。
AsyncFileUpload1
変数に修飾子がある場合WithEvents
、イベント ハンドラー自体で Handles キーワードを使用して、次の操作を実行できます。
Private Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AsyncFileUploadEventArgs) Handles AsyncFileUpdate1.UploadedComplete
'handler logic...
End Sub
WithEvents
修飾子がない場合、次のように動作します。
AddHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete
イベント ハンドラーを削除するには、次の手順を実行します。
RemoveHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete
これはメモリ リークWithEvents/Handles
を引き起こす可能性があるため、ルートに注意してください。これは単なるシンタックス シュガーであり、舞台裏で AddHandler を接続します。これを追加したのは、VB を学習しているときに以前にやけどを負ったことがあるためです (C# のバックグラウンドがありました)。