Share via


Información detallada: compartir un controlador de eventos

Actualización: noviembre 2007

En esta lección, aprenderá a crear un controlador de eventos compartido que controla eventos para más de un control.

En la lección anterior, Hacer que el programa reaccione ante el usuario: crear un controlador de eventos, aprendió a escribir un código en respuesta a los eventos MouseEnter y MouseLeave para un control Button. Sin embargo, ¿qué pasa si tiene dos o más controles Button y desea mostrar el mismo mensaje para todos ellos? Se puede escribir el código en los controladores de eventos para cada control, pero afortunadamente, hay una manera más fácil.

Si examina atentamente los métodos controladores de eventos para el evento MouseEnter, observará que la declaración Method (Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter) contiene una cláusula Handles (Handles Button1.MouseEnter). Como es lógico, la palabra clave Handles le dice al controlador de eventos cuáles eventos debe controlar.

Para compartir un controlador de eventos entre varios controles, simplemente debe agregar los nombres de los controles adicionales y el nombre del evento que desea controlar. Luego, el controlador de eventos recibe una notificación cuando se produce el evento para cualquiera de dichos controles. Por ejemplo, si tiene dos controles Button y desea utilizar el mismo controlador de eventos para ambos, la cláusula Handles puede tener el siguiente aspecto.

Handles Button1.MouseEnter, Button2.MouseEnter.

Ahora tiene un método único que controla el evento MouseEnter para ambos controles, pero ¿cómo sabe el controlador de eventos cuál control provocó el evento? Si examina nuevamente la declaración Method, observará la cláusula ByVal sender As Object; la palabra clave Sender le dice al controlador de eventos cuál objeto (en este caso cuál control) provocó el evento.

Inténtelo

Para compartir un controlador de eventos

  1. Abra el proyecto EventHandler que creó en la lección anterior. Si no lo guardó, primero deberá regresar a la lección anterior, Hacer que el programa reaccione ante el usuario: crear un controlador de eventos y finalizar los procedimientos de dicha lección.

  2. En el Explorador de soluciones, seleccione Form1.vb y, a continuación, en el menú Ver elija Diseñador.

  3. En el Cuadro de herramientas, arrastre otro control Button hasta el formulario.

  4. En la ventana Propiedades, establezca la propiedad AutoSize en True.

  5. En el menú Ver, elija Código para abrir el Editor de código.

  6. En la declaración de método Button1_MouseEnter (Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter), cambie la cláusula Handles para que se lea Handles Button1.MouseEnter, Button2.MouseEnter.

  7. En el cuerpo de la declaración de evento, reemplace el código con lo siguiente.

    If sender.Equals(Button1) Then
      Button1.Text = "The mouse has entered Button1"
    Else
      Button2.Text = "The mouse has entered Button2"
    End If
    

    Este código comprueba si el remitente era Button1 , si es así, se actualiza la propiedad Text de Button1, si no lo es, se actualiza la propiedad Text de Button2.

  8. En la declaración de método Button1_MouseLeave, cambie la cláusula Handles para que se lea de la siguiente manera.

    Handles Button1.MouseLeave, Button2.MouseLeave.

  9. En el cuerpo de la declaración de evento, reemplace el código con lo siguiente.

    sender.Text = "The mouse has left"
    

    En este caso, el código establece la propiedad Text del remitente (Button1 o Button2) en la misma cadena.

  10. Presione F5 para ejecutar la aplicación.

    Ahora, cuando el puntero del mouse (ratón) pasa sobre el botón, el texto cambia a The mouse has entered junto con el nombre del botón, y cuando el mouse ya no está sobre el botón, el texto vuelve a ser The mouse has left.

    Intente agregar más controles al formulario y modificar las cláusulas Handles para incluirlos, ni siquiera deben ser del mismo tipo.

Pasos siguientes

En esta lección, aprendió a compartir un controlador de evento único entre varios controles. En la siguiente lección, aprenderá a utilizar dos nuevos tipos de controles, los controles CheckBox y RadioButton, para presentar opciones a los usuarios.

Siguiente lección: Obtener opciones seleccionadas por el usuario: utilizar casillas y botones de opción

Vea también

Tareas

Hacer que el programa reaccione ante el usuario: crear un controlador de eventos