2009-09-28 11 views
6

Me siento cómodo con los eventos y controladores de Vb.Net. ¿Alguien me puede ayudar con cómo crear controladores de eventos en C# y generar eventos?Cómo levantar eventos usando addHandler

+0

Necesita ser más específico. – tster

+2

Creo que solo quiere saber cómo agregar controladores de eventos y generar eventos en C#, y ya sabe cómo hacerlo en VB. –

+0

Mitesh, he editado tu pregunta bastante. Solo estaba tratando de mejorar el inglés. Si he entendido mal lo que me pedías, lo siento, por favor, simplemente cámbialo. – MarkJ

Respuesta

3
public MyClass() 
    { 
     InitializeComponent(); 
     textBox1.LostFocus += new EventHandler(testBox1_LostFocus); 
    } 

    void testBox1_LostFocus(object sender, EventArgs e) 
    { 
     // do stuff 
    } 
4

En C# 2 y hasta que se agregan controladores de eventos como este:

yourObject.Event += someMethodGroup; 

Cuando la firma de someMethodGroup coincide con la firma delegado de yourObject.Event.

En C# 1 es necesario crear explícitamente un controlador de eventos como éste:

yourObject.Event += new EventHandler(someMethodGroup); 

y ahora las firmas del grupo Método, evento y EventHandler deben coincidir.

10

Los desarrolladores que solo conocen C#, o solo VB.Net, pueden no saber que esta es una de las mayores diferencias entre VB.NET y C#.

Voy a shamelesssly copy esta buena explicación de los eventos de VB: VB utiliza una sintaxis declarativa para adjuntar eventos. La cláusula Handles aparece en el código que manejará el evento. Cuando sea apropiado, múltiples métodos pueden manejar el mismo evento, y múltiples eventos pueden ser manejados por el mismo método. El uso de la cláusula Handles se basa en el modificador WithEvents que aparece en la declaración de la variable subyacente, como un botón. También puede adjuntar controladores de propiedades usando la palabra clave AddHandler y eliminarlos con RemoveHandler. Por ejemplo

Friend WithEvents TextBox1 As System.Windows.Forms.TextBox 

Private Sub TextBox1_Leave(ByVal sender As System.Object, _ 
    ByVal e As System.EventArgs) Handles TextBox1.Leave 
    'Do Stuff ' 
End Sub 

En C# no puede usar la sintaxis declarativa. Utiliza + = que está sobrecargado para actuar como el AddHandler de VB.Net. Aquí hay un ejemplo robado desvergonzadamente de tster's answer:

public MyClass() 
{ 
    InitializeComponent(); 
    textBox1.Leave += new EventHandler(testBox1_Leave); 
} 

void testBox1_Leave(object sender, EventArgs e) 
{ 
    //Do Stuff 
} 
Cuestiones relacionadas