Cómo: Conectar varios eventos con un único controlador de eventos en páginas Web ASP.NET

Actualización: noviembre 2007

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

  • En el marcado de página, agregue el mismo nombre de evento y el mismo nombre de método a cada control, como en el ejemplo de código siguiente.

    <asp:Button ID="Button1" onclick="Button_Click"  
      Text="Button1" /> 
    <br />
    <asp:Button ID="Button2" onclick="Button_Click" 
      Text="Button2" />
    
    Nota:

    Debe asegurarse de que el método tiene la firma correcta para el evento que está controlando.

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

  1. En el controlador de eventos, declare una variable cuyo tipo coincida con los controles que dieron lugar al evento.

  2. 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

Otros recursos

Control de eventos del servidor en páginas Web ASP.NET