2009-04-27 12 views
8

Estoy migrando algún código de VB.NET a C# (3.5).Migración de 'Controles' de VB.NET a C#

me parece estructuras como:

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 

¿Cuál es la forma más sencilla de traducir ese comportamiento a C#?

Respuesta

11

Recomiendo usar el Telerik Code Converter como un comienzo.

C# no tiene esa fácil conexión automática de controladores de eventos mediante la palabra clave "Manejar" como lo hace VB.NET.

//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); 
    } 
} 

Además, es necesario asignar sus controladores de eventos para los objetos de esta manera:

Button1.Click += Button1_Click; 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    //do something. 
} 

Sin embargo C# tiene la capacidad sucinta de hacerlo así:

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

pienso olvidó el => para una expresión lambda en el último fragmento de código (o los tipos de palabras clave y parámetros delegados para un método anónimo). –

+0

@Jon - ¡Gracias por la corrección! –

+1

La adición de expresiones lambda a eventos también se puede realizar en VB.NET, con la siguiente monstruosidad: 'AddHandler Button1.Click, Sub (sender, e) 'hacer algo aquí' o' AddHandler Button1.Click, Sub (remitente, e) 'hacer algo aquí en múltiples líneas' End Sub' –