2009-04-27 2 views
8

VB.NET에서 C# (3.5)로 일부 코드를 마이그레이션하려고합니다.VB.NET에서 C#으로 마이그레이션 '핸들'

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 번호에 변환 할 수있는 가장 간단한 방법은 무엇입니까 :

내가 좋아하는 구조를 찾을?

답변

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#을뿐만 아니라이 일의 간결 능력을 가지고 않습니다 마지막 코드에서 람다 표현식 (또는 익명 메소드의 델리게이트 키워드와 매개 변수 유형)을 => 잊어 버렸습니다. –

+0

@ 존 - 고마워요! –

+1

이벤트에 람다 식을 추가하는 것은 다음과 같은 괴물과 함께 VB.NET에서도 수행 할 수 있습니다 :'AddHandler Button1.Click, Sub (sender, e) '여기 뭔가를하십시오'또는'AddHandler Button1.Click, Sub (sender, e) '여기 여러 줄로 뭔가를해라.'End Sub' –