Sunteți pe pagina 1din 3

Eventos y delegados

Un evento es un mensaje que enva un objeto cuando ocurre una accin. La accin puede estar
causada por la interaccin del usuario, como un clic, o por otra lgica del programa. El objeto que
provoca el evento se conoce como remitente del evento. El objeto que captura el evento y
responde a l se denomina receptor del evento.
En las comunicaciones de eventos, el remitente del evento no sabe qu objeto o mtodo recibir los
eventos que provoca. Se necesita un intermediario (o mecanismo de tipo puntero) entre el origen y
el receptor. .NET Framework define un tipo especial (Delegado) que proporciona la funcionalidad de
un puntero a funcin.
Un delegado es una clase que puede guardar una referencia a un mtodo. A diferencia de otras
clases, una clase de delegado tiene un prototipo y puede guardar referencias nicamente a los
mtodos que coinciden con su prototipo. Por lo tanto, un delegado equivale a un puntero a funcin
con seguridad o a una devolucin de llamada. Aunque los delegados tienen otros usos, esta
explicacin se centra en la funcionalidad de control de eventos de los delegados. Una declaracin
de delegado es suficiente para definir una clase de delegado. La declaracin proporciona el
prototipo del delegado y Common Language Runtime proporciona la implementacin. En el
siguiente ejemplo se muestra la declaracin de un delegado de eventos.
C#
VB
public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);

La sintaxis es similar a la de la declaracin de un mtodo; no obstante, la palabra
clave delegate indica al compilador que AlarmEventHandler es un tipo de delegado. Por
convencin, los delegados de evento de .NET Framework tienen dos parmetros, el origen que
provoc el evento y los datos del evento.
Una instancia del delegado AlarmEventHandler puede enlazarse a cualquier mtodo que
coincida con su prototipo, como el mtodo AlarmRang de la clase WakeMeUp, como se muestra en
el siguiente ejemplo.
C#
VB
public class WakeMeUp
{
// AlarmRang has the same signature as AlarmEventHandler.
public void AlarmRang(object sender, AlarmEventArgs e)
{...};
...
}
Los delegados de evento personalizados slo son necesarios cuando un evento genera datos de
evento. Muchos eventos, incluidos algunos eventos de interfaz de usuario, como los clics, no
generan datos de evento. En estos casos, es apropiado el delegado proporcionado en la biblioteca
de clases para el evento sin datos, System.EventHandler. A continuacin se muestra su declaracin.
C#
VB
delegate void EventHandler(object sender, EventArgs e);

Los delegados de evento son de multidifusin, lo que significa que pueden guardar referencias a
ms de un mtodo de control de eventos. Para obtener ms informacin, veaDelegado. Los
delegados permiten realizar un control de eventos ms flexible y detallado. Un delegado acta
como remitente de eventos de la clase que provoca el evento y mantiene una lista de los
controladores registrados para el evento.
Para obtener ms informacin sobre cmo usar delegados para incluir funcionalidad de eventos en
un componente o control, vea Provocar un evento.
Para obtener informacin general sobre cmo consumir eventos en sus aplicaciones, vea Consumir
eventos.

Herencia visual de formularios Windows Forms
En ocasiones, quiz decida que un proyecto debe llamar a un formulario similar a uno que ya cre
en un proyecto anterior. O bien, quiz desee crear un formulario bsico con configuraciones tales
como una marca de agua o determinado diseo de controles que utilizar de nuevo dentro de un
proyecto, donde cada una de las iteraciones contendr modificaciones respecto a la plantilla de
formulario original. La herencia de formularios permite crear un formulario base, heredar de l y
hacer modificaciones mientras se conserva la configuracin original necesaria.
Puede crear mediante programacin los formularios de clase derivada o mediante el Selector de
herencia visual.


Cmo: Heredar formularios Windows Forms
La creacin de nuevos formularios Windows Forms mediante herencia, a partir de formularios base,
es una forma prctica de duplicar los mejores logros, sin tener que crear de nuevo un formulario
cada vez que se necesite.
Para obtener ms informacin sobre la herencia de formularios en tiempo de diseo mediante el
cuadro de dilogo Selector de herencia y sobre cmo distinguir visualmente los niveles de
seguridad de los controles heredados, vea Cmo: Heredar formularios mediante el cuadro de
dilogo Selector de herencia.
Nota Para heredar de un formulario, el archivo o el espacio de nombres que contiene dicho
formulario debe haberse compilado para producir un archivo ejecutable o DLL. Para compilar el
proyecto, elija Compilar en el men Compilar. Adems, es necesario agregar a la clase que hereda
el formulario una referencia al espacio de nombres. Los cuadros de dilogo y comandos de men
que se ven pueden diferir de los descritos en la Ayuda, en funcin de los valores de configuracin o
de edicin activos. Para cambiar la configuracin, elija Importar y exportar configuraciones en el
men Herramientas. Para obtener ms informacin, vea Valores de configuracin de Visual Studio.
Para heredar un formulario mediante programacin
1. En la clase, agregue una referencia al espacio de nombres que contiene el formulario del
cual desea heredar.
2. En la definicin de clase, agregue una referencia al formulario del que va a
heredar. La referencia debera incluir el espacio de nombres que contiene el
formulario, seguido por un punto y el nombre del propio formulario base.
C#
VB
public class Form2 : Namespace1.Form1

Reflexin (C# y Visual Basic)
Personas que lo han encontrado til: 2 de 2 - Valorar este tema
La reflexin proporciona objetos (de tipo Type) que describen ensamblados,
mdulos y tipos. Se puede utilizar la reflexin para crear dinmicamente una
instancia de un tipo, enlazar el tipo a un objeto existente u obtener el tipo a partir
de un objeto existente, e invocar sus mtodos o tener acceso a sus campos y
propiedades. Si utiliza atributos en el cdigo, la reflexin permite tener acceso a
ellos. Para obtener ms informacin, vea Extender metadatos mediante atributos.
Este es un ejemplo simple de reflexin que utiliza el mtodo esttico GetType,
heredado por todos los tipos de la clase base Object, para obtener el tipo de una
variable:
C#
VB

// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);


El resultado es:
System.Int32
En el ejemplo siguiente se utiliza la reflexin para obtener el nombre completo del
ensamblado cargado.
C#
VB

// Using Reflection to get information from an Assembly:
System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);


El resultado es:
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

S-ar putea să vă placă și