2010-11-18 19 views
2

NET gurus ...この非常に小さなチャンクをVBにどのように変換しますか?私はオンラインコンバータ(Telerik)を使用する場合C#とVB.NETのイベント処理の相違点

this.timer = new System.Timers.Timer(100); 
this.timer.Elapsed+=new System.Timers.ElapsedEventHandler(ManageThreads); 
this.timer.Start(); 

は、真ん中の行は次のように変換されます。

Me.timer.Elapsed += New System.Timers.ElapsedEventHandler(ManageThreads) 

2でエラー: 1 - 「公共eventElapsedがイベントであり、直接呼び出すことはできません。使用raiseEvent 2 - 委任は、式のAdessが必要です。私は単に?

どれ手がかり暖かく歓迎「のアドレス」を追加してください。

+3

クラッピーコンバータ、これはかなり基本的です。 –

答えて

3

何か奇妙戻り、このコンバータ

試してみてください。 AddHandlerのMe.timer.Elapsed、のAddressOf ManageThreads

イベントハンドラを追加するための構文は非常に異なっている.NET に動的にhttp://www.thescarms.com/dotnet/EventHandler.aspx

5

をイベントハンドラを追加および削除C#とVB.NETの間で、Telerikがその違いをうまく処理しないことを発見したので、

C#のハンドラの構文を追加します。

<object>.<event> += <event_handler_function> 

VBハンドラの構文を追加します。

​​

あなたはVBのイベント処理をする可能性もあります別の漁獲量があります:あなたがしているオブジェクトがクラススコープで宣言されるべきイベントハンドラを追加する。例えば。ローカルに作成されたオブジェクト(メソッド内)にハンドラを追加して返したり、コレクションに追加することはできません。したがって、動的に処理を行う必要がある場合は、基本的にクラスレベルの一時変数があります。

幸運。

+0

VB.NETに 'Handles'キーワードを使って自動的にイベントを配線するには、クラスのスコープで' WithEvents'キーワードを使ってauto-event-propertyとして宣言する必要がありますが、手動のAddHandler/RemoveHandlerコードで適用しないでください。私は間違っている? – supercat

+0

最後の段落が間違っています。手動でイベントを配線する場合は、オブジェクト 'WithEvents'を宣言するときにのみその制限があります。好きな場所に宣言できます –