Crear y consumir Eventos en C#

Aunque parece un tema fácil y de novatos, los que venimos acostumbrados a muchos años de VB y VB.net, no lo tenemos tan claro. Tras revisar documentación por la RED te encuentras multitud de hilos en los que te explican, cada uno de su forma y manera, como crear un evento y consumirlo desde otra clase.  La mayoría de ellos lo hacen de forma intachable siguiendo las “normas Microsoft”, pero yo, cogiendo de aquí y de allí, os lo voy a explicar de forma sencilla y menos liosa.

En la clase que publica el evento hay que crear un delegado y un evento del tipo del delegado creado. Cada vez que se quiera hacer la invocación al evento basta con hacer la llamada al evento pasándole los argumentos creados en el delegado.

//Creamos el delegado
public delegate void EstadoProcesoDelegate(string Estado);

//Creamos el evento para llamamos al delegados
public event EstadoProcesoDelegate EstadoProceso;

//invocamos al evento
EstadoProceso("Cadena de texto a pasar");

En la clase en la que queremos consumir los eventos simplemente tendremos que crear una instancia de dicha clase y asignar a cada evento que hayamos creado en la clase un método con la misma estructura que el delegado creado.


cClaseConEventos oEvento = new cClaseConEventos();      
//Le asignamos al evento de la clase un metodo con la misma estructura que el delegado      
oEvento.ContadorProceso += oTraspaso_ContadorProceso;

//Creamos un método donde utilizaremos el valor que nos devuelve el evento cada vez 
//que se invoque en la clase en la que lo lanzamos
void oTraspaso_EstadoProceso(string Estado)
{            
     lblProcesoMSJ.Text = Estado;
     lblProcesoMSJ.Refresh();
     this.Refresh();
}

Deja un comentario