El modelo de evento de .NET Framework se basa en la existencia de un delegado de eventos que conecte un evento a su controlador. Para provocar un evento, se requieren dos elementos:
El delegado es un tipo que define una firma; es decir, el tipo del valor devuelto y los tipos de la lista de parámetros de un método. Puede utilizar el tipo delegado para declarar una variable que puede hacer referencia a cualquier método con la misma firma que el delegado.
La firma estándar del delegado de un controlador de eventos define un método que no devuelve ningún valor, cuyo primer parámetro es de tipo Object y hace referencia a la instancia que provoca el evento, y cuyo segundo parámetro se deriva del tipo EventArgs y contiene los datos de eventos. Si el evento no genera datos de eventos, el segundo parámetro es tan sólo una instancia de EventArgs. De lo contrario, el segundo parámetro es un tipo personalizado derivado de EventArgs y que proporciona los campos o propiedades necesarios para contener los datos de eventos.
EventHandler es un delegado predefinido que representa un método controlador de un evento, independientemente de si el evento genera datos de eventos o no. Si el evento no genera datos de eventos, sustituya el parámetro de tipo genérico por EventArgs; en caso contrario, utilice su propio tipo de datos de eventos personalizado para sustituir el parámetro de tipo genérico.
La ventaja de utilizar EventHandler es que no necesita codificar su propio delegado personalizado si el evento genera datos de eventos. Además, .NET Framework sólo necesita una implementación para poder utilizar EventHandler, independientemente del tipo de datos de eventos que utilice para sustituir el parámetro de tipo genérico.
Para asociar el evento al método que lo controlará, agregue una instancia del delegado al evento. Siempre que se produzca el evento, se llamará a su controlador, a menos que se quite el delegado.
Para obtener más información sobre los delegados del controlador de eventos, vea Eventos y delegados.