2012-01-12 24 views
3

このコードはAjaxControlToolkitSampleSiteの一部です。正確には、それはAsyncFileUploadコントロールである:VB.NETでイベントハンドラを追加するには?

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

どのように私はVB.NETにこれを変換することができますか?ここで

+5

http://www.developerfusion.com/tools/convert/csharp-to-vb/ –

+2

@runeこのコンバータは、この場合無効なコード**を生成します。 VB.Net AddHandlerは認識していません。重複した質問で報告されているように。 – MarkJ

+0

@ MarkJええ、彼らは完璧ではありませんが、通常はかなり良い出発点であり、神は実際には手作業をしなくてはなりません:)。あなたのコメントを除いてジョークは私がコメントとして投稿した理由であり、答えの一部ではない –

答えて

5

あなたが行く:

AddHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete 

また、あなたのコードの中に、あなたは(単にコード上)左側のドロップダウンリストからAsyncFileUpload1コントロールを選択することができ、その後、右からUploadCompleteイベントを選択手のドロップダウンリスト。

これは、VB Handles宣言を使用して、正しいシグネチャで自動的にイベントハンドラを作成します。

+0

あなたは大いに –

+1

あなたは大歓迎です。質問への回答が解決したときには、質問の将来の訪問者がこれがあなたの質問を解決した答えであることを知るために、回答の横にあるチェックマークをクリックする必要があります。ありがとう! –

0

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

また、ILSpyはVB.NETにC#で書かれたコンパイルされたDLLを翻訳することができ

1

その他は文字通りVBでAddHandlerevent+=を変換する方法を示しています。

しかし、類似点にもかかわらず、VBとC#は異なる言語であり、良いC#コードは文字通り翻訳されたときに良いVBコードではないかもしれません。あなたのAsyncFileUpload1変数がある場合は

:これを行うには

Protected Sub AsyncFileUpload1_UploadedComplete(sender As Object, _ 
               e As AsyncFileUploadEventArgs) _ 
    Handles AsyncFileUpload1.UploadedComplete 

    ' Your event handler code is here 

End Sub 
0

二つの方法:例えば、VBで、標準的な方法は、ASP.NETコントロールに固定されたイベントハンドラをアタッチすることがHandlesキーワードを使用することです

0123:何 WithEvents修飾子、次の作品が存在しない場合

Private Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AsyncFileUploadEventArgs) Handles AsyncFileUpdate1.UploadedComplete 

    'handler logic... 

End Sub 

WithEvents修飾子は、あなたは、イベントハンドラ自体にHandlesキーワードを使用して次の操作を行うことができます

AddHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete 

次の操作を行い、イベントハンドラを削除するには:

RemoveHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete 

このようWithEvents/Handlesルートの用心memory leaksを引き起こす可能性があります。それは単に構文的な砂糖であり、舞台裏でAddHandlerを結びつけています。私はこれを追加します。なぜなら、VB(私はC#のバックグラウンドを持っていました)を学んでいる間、私はそれを前に燃やしていたからです

+0

'AddHandler'やC#' + = 'は' WithEvents'と同様に[メモリリークの脆弱性](http://stackoverflow.com/a/621177/15639)です。それは全く同じ問題です。 WithEvents' IMHOを避ける理由ではない。 – MarkJ

+0

そうですね、私はそれが圧倒的ではないとは言いませんでした。私は 'WithEvents'は基本的に' RemoveHandler'を持たない 'AddHandler'だから、' AddHandler'や '+ ='と同じようにメモリリークを起こしやすいと指摘しました。私はC#でコード化しているときにメモリリークがあることを知っているので、イベントの '+ ='と ' - =' 'を数え始めます。 'WithEvents'はVBでこのチェックを少し複雑にすることができます。 – avanek

関連する問題