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" runat="server" Text="Button1" /> <br /> <asp:Button ID="Button2" onclick="Button_Click" runat="server" 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.
Visual BasicSub Button_Click (ByVal sender as System.Object, _ ByVal e as System.EventArgs) _ Handles Button1.Click, Button2.Click, Button3.Click
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.
Visual BasicPrivate 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
C#private void Button_Click(object sender, System.EventArgs e) { Button b = (Button) sender; Label1.Text = b.ID; }