Hola a todos, me tome unas vacaciones y para publicar este articulo prácticamente tuve que volver a entender yo como era el tema de los eventos y delegados jajá, bueno en el primer tutorial hicimos una primera aproximación de cómo crear un evento, seguro se están preguntando como utilizo el evento, antes de responder a esa preguntita, vamos a poner más en claro lo que es un Delegado no les voy a mentir me leí mas de un libro y para mi mala suerte también la ayuda de Microsoft, es muy completa pero pesadísima de seguir en mi humilde opinión.
Ya estamos así que vamos a empezar con el amigo Delegado:
Un Delegado es un tipo que define una firma de método. Lo que dice la frase es que si se crea una instancia de un delegado se lo puede asociar con cualquier método que tenga una firma compatible.
Si no te queda muy claro lo que es una “Firma”, no se hagan drama ahora lo vamos a ver con un ejemplo para que la cosa quede más clara:
Supongamos que tenemos un método como este:
public int Sumar(int x, int y)
{
int resutado = x + y;
return resultado;
}
Este método se lo puede asignar a una instancia de un delegado de tipo Calcular que es el que representa a la Firma. Para más claridad vamos a poner un ejemplo:
//Creamos la instancia del delegado
Calcular calculito = Sumar;
//Invoco al delegado
int resultadoSuma = calculito(2,5);
Entonces podemos decir que invocar a un delegado es como invocar a un método, si podeos decir que es más o menos así. Pero vamos a aclarar las líneas anteriores para que sea todo transparente, que términos estoy metiendo se ve el que fernet saca mi poeta interior jajaja.
La primera línea es una abreviatura de:
Calcular calculito = new Calcular(Sumar);
y calculito(2,5); es igual a poner Calculito.Invoke(2,5);
En definitiva creo o espero que con esto quede más o menos claro lo que es un delegado, hay muchísimas más cosas pero las iremos viendo más adelante.
Bueno con lo que sabemos hasta acá alcanza como para poder entender el siguiente ejemplito, pero antes aclaro que cuando termine con los tutoriales de Eventos y Delegados voy a poner un código de ejemplo para que sea todo más claro, ahora explico el ejemplo:
Tenemos una ventana llamada “CargarVehiculo” y otra “SeleccionarPersona”, lo que necesitamos para cargar un vehículo es seleccionar el dueño del vehículo, de mas esta decir que las personas ya están cargadas en la Base de Datos.
La mecánica es que en la pantalla CargarVehiculo vamos a tener un botón para seleccionar una persona, para hacer esto vamos lanzar un evento para capturar esa persona y del otro lado el disparador, sé que no suena muy fácil y yo ya a las 3 de la mañana no estoy tan ágil para explicar, sepan disculpar pero con el ejemplo todo va a quedar más claro.
Solución:
Bueno en la pantalla SeleccionarPersona definimos el evento, es decir todo lo que se explico en el tutorial 1.
En la pantalla CargarVehiculo vamos a lanzar el evento y poner el código.
Este código esta en CargarVehiculo:
WinBuscaPersona SeleccionarPersona = new WinBuscaPersona();
SeleccionarPersona.MiEntidadSeleccionada += new WinBuscaPersona.MiSeleccion(miEmpresaSeleccionada);
SeleccionarPersona.ShowDialog();
//Si miran bien este método coincide con el delegado del tutorial 1.
void miEmpresaSeleccionada(object Entidad)
{
//Mi código
}
Este código esta en SeleccionarPersona (mas lo definido en el tutorial 1)
OnMiEntidadSeleccionada(personita);
Close();
Hasta acá llegue siguiéremos con más de Eventos y Delegados, en el tutorial 3 y les voy a poner el código de todo lo aprendido para que sigamos siendo amigos, un abrazo.
No hay comentarios:
Publicar un comentario