Esta documentación está archivada y no tiene mantenimiento.

Utilizar eventos

Para consumir un evento en una aplicación, debe proporcionar un controlador de eventos (método de control de eventos) que ejecute la lógica del programa en respuesta al evento, y que registre el controlador de eventos en el origen del evento. Este proceso se denomina conexión de eventos. Los diseñadores visuales de formularios Windows Forms y formularios Web Forms disponen de herramientas para la programación rápida de aplicaciones (RAD) que simplifican u ocultan los detalles de la conexión de eventos.

En este tema se describe el modelo general de control de eventos. Para obtener información general sobre el modelo de eventos de .NET Framework, vea Eventos y delegados. Para obtener más información sobre el modelo de eventos en formularios Windows Forms, vea Cómo: Consumir eventos en una aplicación de Windows Forms. Para obtener más información sobre el modelo de eventos en formularios Web Forms, vea Cómo: Consumir eventos en una aplicación de formularios Web Forms.

Patrón de eventos

Los detalles sobre el cableado de eventos son diferentes tanto en los formularios Windows Forms como en los formularios Web Forms debido a los niveles diferentes de compatibilidad proporcionados por diferentes herramientas RAD. Sin embargo, ambos escenarios siguen el mismo modelo de evento, que tiene las siguientes características:

  • Una clase que provoca un evento denominado EventName tiene el siguiente miembro:

    public event EventNameEventHandler EventName;
    
    

    Public Event EventName As EventNameEventHandler
    
  • El delegado de eventos para el evento EventName es EventNameEventHandler, con la siguiente firma:

    public delegate void EventNameEventHandler(object sender, EventNameEventArgs e);
    
    

    Public Delegate Sub EventNameEventHandler(sender As Object, e As EventNameEventArgs)
    

Para consumir el evento EventName, el controlador de eventos debe tener la misma firma que el delegado de eventos:

void EventHandler(object sender, EventNameEventArgs e) {}

NoteNota

En .NET Framework, un delegado de eventos se denomina EventNameEventHandler, mientras que en la documentación, controlador de eventos hace referencia a un método de control de eventos. La razón de la utilización de este esquema de nombres es que un delegado EventNameEventHandler apunta al controlador de eventos (el método) que en realidad controla el evento.

Cuando un evento no tiene ningún dato asociado, la clase que provoca el evento utiliza System.EventHandler como delegado y System.EventArgs para los datos del evento. Los eventos que tienen datos asociados utilizan clases que se derivan de EventArgs para ese tipo de datos de evento y el tipo de delegado de evento correspondiente. Por ejemplo, si se desea controlar un evento MouseUp en una aplicación de Windows Forms, la clase de datos de evento es MouseEventArgs y el delegado de evento es MouseEventHandler. Observe que varios eventos de mouse (ratón) utilizan una clase común de datos de evento y un delegado de evento común, por lo que el esquema de nombres no coincide exactamente con la convención descrita anteriormente. En el caso de los eventos del mouse, el controlador de eventos debe tener la firma siguiente:

void Mouse_Moved(object sender, MouseEventArgs e){}

El remitente y los parámetros de argumentos de eventos proporcionan detalles adicionales sobre el evento del mouse al controlador de eventos. El objeto de remitente indica qué fue lo que provocó el evento. El parámetro MouseEventArgs proporciona detalles sobre el movimiento del mouse que provocó el evento. Muchos orígenes de eventos proporcionan datos adicionales para el evento y muchos controladores de eventos utilizan los datos específicos del evento para procesar el evento en cuestión. Para obtener un ejemplo que muestre cómo provocar y controlar eventos con datos específicos del evento, vea Cómo a: Provocar y utilizar eventos.

NoteNota

Los eventos también se provocan fuera del contexto de las interfaces de usuario y, de hecho, .NET Framework incluye muchas clases que no son de interfaz de usuario y que provocan eventos. No obstante, todos los eventos siguen el patrón aquí descrito.

Para obtener información sobre cómo provocar los eventos de una clase, vea Provocar un evento.

Vea también

Mostrar: