Si ya dispone de un controlador de eventos, puede enlazarle varios eventos de control. Estos eventos múltiples pueden ser del mismo control, o un evento puede ser de varios controles distintos, siempre y cuando todos los eventos tengan la misma firma de método. Por ejemplo, quizás desee enlazar los eventos Click de varios controles de servidor Button de una página ASP.NET a un único controlador de eventos. Cuando se llama al controlador, se puede determinar el control que causó el evento.
Para conectar varios eventos a un único controlador de eventos
Para conectar varios eventos a un único controlador de eventos en Visual Basic
-
Modifique la cláusula Handles de un método agregando los nombres de los eventos que el método debe controlar. Separe los nombres de los eventos mediante comas.
En el ejemplo de código siguiente se muestra cómo puede enlazar el método Button_Click a eventos provocados por tres controles Button.
Sub Button_Click (ByVal sender as System.Object, _
ByVal e as System.EventArgs) _
Handles Button1.Click, Button2.Click, Button3.Click Nota |
|---|
| Si utiliza una cláusula Handles para enlazar un evento y un método, no incluya también el atributo de evento en el marcado. Por ejemplo, no incluya un atributo onClick en el marcado para un control Button. Si lo hace, se llamará dos veces al método. |
Para determinar el control que provocó el evento
-
En el controlador de eventos, declare una variable cuyo tipo coincida con los controles que dieron lugar al evento.
-
Asigne el primer argumento del controlador de eventos a la variable, convirtiéndolo al tipo correspondiente.
En el siguiente ejemplo de código se muestra el controlador del evento Click de un control Button al que llaman varios botones diferentes. El controlador muestra la propiedad ID del botón que provocó el evento.
Private Sub Button_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click, Button2.Click, Button3.Click
Dim b As Button = CType(sender, Button)
Label1.Text = b.ID
End Sub
private void Button_Click(object sender, System.EventArgs e)
{
Button b = (Button) sender;
Label1.Text = b.ID;
}
Vea también