4

このコードはの一部ですAjaxControlToolkitSampleSite。正確には、それはAsyncFileUploadコントロールにあります:

 AsyncFileUpload1.UploadedComplete += new EventHandler<AsyncFileUploadEventArgs>(AsyncFileUpload1_UploadedComplete);

これをVB.NETに変換するにはどうすればよいですか?

4

4 に答える 4

8

どうぞ:

AddHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete

または、コード内でAsyncFileUpload1、左側のドロップダウン リスト (コードのすぐ上) からコントロールを選択UploadCompleteし、右側のドロップダウン リストからイベントを選択することもできます。

Handlesこれにより、VB宣言を使用して正しいシグネチャを持つイベント ハンドラーが自動的に作成されます。

于 2012-01-12T19:22:40.160 に答える
1

他の人は、文字通り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
于 2012-01-12T19:26:48.933 に答える
0

そのコードをコンパイルする C# プロジェクトに入れることができれば、そのプロジェクトをSharpDevelopで VB.NET に変換できます。これはおそらく、C# と VB.NET の間で変換する最良の方法です。

また、ILSpyは、C# で記述されたコンパイル済みの dll を VB.NET に変換できます。

于 2012-01-12T19:24:06.817 に答える
0

これを行うには 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# のバックグラウンドがありました)。

于 2012-01-12T19:30:54.640 に答える