Eventos en C# 1. Determine la informacin que desea transferir a travs del evento. Por ejemplo, suponga se desea que el siguiente arreglo de estructuras sea presentado en controles en la forma. // ESTRUCTURA public struct InfoPersonas { public string name; public int edad; public string direccion; }
M.C. Oscar I. Ramrez Huerta 3/7/2012 Eventos en C# 2.-Crear la clase a travs de la cual se enva la informacin. La clase hereda de la clase EventArgs. public class Cls_MisArgmentos : EventArgs { public Cls_MisArgmentos(InfoPersonas [] datos) { this.datos =datos;
} public InfoPersonas [] datos;
} M.C. Oscar I. Ramrez Huerta Constructor 3/7/2012 Eventos en C# 3.- Declarar el Delegado pblico.
public delegate void MyDelegado(object sender,Cls_MisArgmentos e);
M.C. Oscar I. Ramrez Huerta La clase de argumentos se enva con parmetro del delegado porque apuntara a una subrutina que empleara la misma firma 3/7/2012 Eventos en C# 4.- Dentro de la clase de trabajo se declara el EVENTO y variables adicionales. class Cls_DelegadosEventos { public event MyDelegado MyEvent; InfoPersonas [] _personas; }
M.C. Oscar I. Ramrez Huerta Evento Arreglo privado de tipo estructura 3/7/2012 Eventos en C# 5.-Generar Mtodo en clase que Registra Informacin en estructura. private void llena_arregloEstructras() {for (int index = 0; index < Nelementos ; index++) { Array.Resize(ref _personas , index + 1);
} } M.C. Oscar I. Ramrez Huerta 3/7/2012 Eventos en C# 6.- Crear el mtodo que Lanza el evento. public void RecoverInfo() { //invocando al metodo que llena el arreglo llena_arregloEstructras (); // Creando objeto de argumentos. Cls_MisArgmentos e_arg = new Cls_MisArgmentos (_personas ); // Invocando el evento MyEvent .Invoke (this,e_arg ); }
M.C. Oscar I. Ramrez Huerta 3/7/2012 Eventos en C# 7. Agregar el Evento en la forma para indicar que apunte al evento del Objeto private void Form1_Load(object sender, EventArgs e) { Obj_DelEvent = new Cls_DelegadosEventos(); // se enlaza el evento con el delegado para que se invoque desde la clase Obj_DelEvent.MyEvent += new MyDelegado(Obj_DelEvent_MyEvent);
}
M.C. Oscar I. Ramrez Huerta 3/7/2012 Eventos en C# 8. Automticamente al agregar el Evento anterior se genera el evento del objeto. void Obj_DelEvent_MyEvent(object sender, Cls_MisArgmentos e) { lst_info.Items.Clear(); for (int x = 0; x <= e.datos.Length - 1; x++) lst_info.Items.Add(e.datos[x].name + e.datos[x].direccion + e.datos[x].edad.ToString());