2009-04-27 6 views
8

私はVB.NETからC#(3.5)にいくつかのコードを移行しています。VB.NETからCへのマイグレーション 'Handles'#

Public Event DataLoaded(ByVal sender As Object, ByVal e As EventArgs) 

Protected Sub Mag_Button_Load_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Mag_Button_Load.Click 
[..] 
     RaiseEvent DataLoaded(Me, EventArgs.Empty) 
End Sub 
[..] 

'Other Class 
Private Sub LoadData(ByVal sender As Object, ByVal e As System.EventArgs) Handles oData.DataLoaded 
[..] 
End Sub 

C#1に、このような行動を変換する最も簡単な方法は何ですか?私のような構造が見つけ

答えて

11

Telerik Code Converterを使い始めることをおすすめします。

C#では、VB.NETのように "Handles"キーワードを使用してイベントハンドラを簡単に自動的に取り付けることはできません。

//EventHandler declaration 
public event EventHandler DataLoaded; 
protected void Mag_Button_Load_Click(object sender, EventArgs e) 
{ 

    //Raise Event 
    if (DataLoaded != null) { 
     DataLoaded(this, EventArgs.Empty); 
    } 
} 

はまた、あなたは、このようなオブジェクトには、あなたのイベントハンドラを割り当てる必要があります:私は考えて

Button1.Click += (sender, e)=> 
{ 
    //do something 
} 
+1

Button1.Click += Button1_Click; protected void Button1_Click(object sender, EventArgs e) { //do something. } 

しかしC#が、同様にこれを行うための簡潔な能力を持っていますあなたは、最後の部分のラムダ式(または無名メソッドのdelegateキーワードとパラメータタイプ)の=>を忘れてしまったでしょう。 –

+0

@Jon - ありがとうございました! –

+1

イベントにラムダ式を追加するには、VB.NETでも以下のような問題があります: 'AddHandler Button1.Click、Sub(sender、e) 'ここで何かするか、' AddHandler Button1.Click、Sub(sender、 e) '複数の行で何かを行う' End Sub' –

関連する問題