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
Respuesta
public MyClass()
{
InitializeComponent();
textBox1.LostFocus += new EventHandler(testBox1_LostFocus);
}
void testBox1_LostFocus(object sender, EventArgs e)
{
// do stuff
}
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.
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
}
- 1. Levantar eventos personalizados en C# WinForms
- 2. Levantar eventos de clase base en clases derivadas C#
- 3. reactive-banana: ¿Cómo crear un AddHandler?
- 4. KeyErrors y cómo levantar un KeyError
- 5. WithEvents/Handles better than Remove/AddHandler?
- 6. ¿Qué es "levantar" en Haskell?
- 7. ¿Cómo cambiar un paquete raíz del proyecto Levantar?
- 8. En vb.net, si uso AddHandler, ¿Tengo que usar RemoveHandler?
- 9. eventos táctiles vs eventos mouse click usando actionscript 3
- 10. DoDragDrop deshabilita eventos MouseMove
- 11. Verificando el registro de eventos usando Moq
- 12. Usando PHP DateInterval para crear eventos recurrentes
- 13. Controlador de eventos dinámicamente establecido usando DataTrigger
- 14. Incendio de eventos al cliente usando WCF
- 15. ¿Cuál es la diferencia entre los eventos lógicos y los eventos nativos en GWT?
- 16. Adición propio controlador de eventos frente a otros controladores de eventos
- 17. datos de auditoría en NHibernate usando eventos
- 18. Python: ¿es mala forma levantar excepciones dentro de __init__?
- 19. YUI eventos Autocompletar, ¿cómo?
- 20. Terminología: ¿se pueden "lanzar" eventos?
- 21. Cómo levantar el error si se duplican las claves en el diccionario
- 22. ¿Cómo crear eventos personalizados?
- 23. Controlador de eventos y pérdidas de memoria
- 24. ¿Cómo declarar los controladores de eventos lambda en VB.Net?
- 25. Levantar imagen cargar, redimensionar, almacenar en la base de datos, mostrar
- 26. Mocking eventos de devolución de llamada de terceros usando moq
- 27. enviar eventos de pitón a javascript usando SL4A
- 28. ¿Qué significa .htaccess con la línea AddHandler php5-script .php do?
- 29. Cómo inyectar manejadores de eventos en eventos con Unity
- 30. eventos Backbone
Necesita ser más específico. – tster
Creo que solo quiere saber cómo agregar controladores de eventos y generar eventos en C#, y ya sabe cómo hacerlo en VB. –
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