Sei sulla pagina 1di 9

CREACIN DE EVENTOS EN C#

M.C. Oscar I. Ramrez Huerta 3/7/2012


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);

_personas[index].name = name + index.ToString () + " ";
_personas[index].edad = edad+index;
_personas[index].direccion = direccion + index.ToString() +" ";

}
}
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());

}

M.C. Oscar I. Ramrez Huerta 3/7/2012

Potrebbero piacerti anche