2011-08-28 26 views
5

私はいくつかのC#コードをVB.NETに変換しようとしています。VB.NETでイベントをサブスクライブする

私は(作品)C#で次いる

m_switchImageTimer = new DispatcherTimer(); 
m_switchImageTimer.Interval = Interval; 
m_switchImageTimer.Tick += (s, e) => LoadNextImage(); 

私が正常に変換するために苦労してるのキー行は次のとおりです。

m_switchImageTimer.Tick += (s, e) => LoadNextImage(); 

私は何をしようとしたことは次のとおりです。

m_switchImageTimer.Tick += Function(s, e) LoadNextImage() 
m_switchImageTimer.Tick += New EventHandler(AddressOf LoadNextImage) 

いずれも動作していません。

最初の試みは、2つのエラー、m_switchImageTimer.Tick下第VS2010ハイライト生成:

Error 1 'Public Event Tick(sender As Object, e As System.EventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event

およびLoadNextImage(下で強調表示された)は以下のエラーを生成します

Error 3 Expression does not produce a value.

第二の試みは、生成します同じエラー:

Error 1 'Public Event Tick(sender As Object, e As System.EventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.

VB.NETに#コード? VB.NETでのイベントをサブスクライブ

おかげ ベン

答えて

11

はAddHandlerのいずれかが必要か、キーワードを処理します。ラムダにも問題がありますが、Functionキーワードには値を返す式が必要です。 VS2010でこれを書くことができます。

AddHandler m_switchImageTimer.Tick, AddressOf SwitchImageTimer_Tick 
... 
Private Sub SwitchImageTimer_Tick(sender As Object, e As EventArgs) 
    LoadNextImage() 
End Sub 
:以前のバージョンでは

AddHandler m_switchImageTimer.Tick, Sub(s, e) LoadNextImage() 

を、あなたはLoadNextImage()メソッドの宣言を変更したり、正しい署名を持つ小さなプライベートヘルパーメソッドを使用するか必要があります

関連する問題