Comment : connecter plusieurs événements à un même gestionnaire d'événements dans les pages Web ASP.NET
Mise à jour : novembre 2007
Si vous disposez déjà d'un gestionnaire d'événements, vous pouvez lui lier plusieurs événements de contrôle. Ces différents événements peuvent provenir du même contrôle ou il peut s'agir d'un événement provenant de plusieurs contrôles différents, tant que les événements ont tous la même méthode de signature. Par exemple, vous pouvez souhaiter lier les événements Click de plusieurs contrôles serveur Button sur une page Web ASP.NET à un seul gestionnaire d'événements. Lorsque votre gestionnaire est appelé, vous pouvez déterminer le contrôle qui a déclenché l'événement.
Pour lier plusieurs événements à un seul gestionnaire d'événements
Dans le balisage de la page, ajoutez le même nom d'évènement et de méthode à chaque contrôle, comme dans l'exemple de code suivant.
<asp:Button ID="Button1" onclick="Button_Click" Text="Button1" /> <br /> <asp:Button ID="Button2" onclick="Button_Click" Text="Button2" />
Remarque : Vous devez vous assurer que la méthode a la signature correcte pour l'événement qu'elle gère.
Pour connecter plusieurs événements à un seul gestionnaire d'événements en Visual Basic
Modifiez la clause Handles d'une méthode en ajoutant les noms des événements que la méthode doit gérer. Séparez les noms des événements par des virgules.
L'exemple suivant de code montre comment vous pouvez lier la méthode Button_Click aux événements déclenchés par trois contrôles Button.
Sub Button_Click (ByVal sender as System.Object, _ ByVal e as System.EventArgs) _ Handles Button1.Click, Button2.Click, Button3.Click
Remarque : Si vous utilisez une clause Handles pour lier un événement et une méthode, n'incluez pas également l'attribut de l'événement dans le balisage. Par exemple, n'incluez pas d'attribut onClick dans le balisage d'un contrôle Button. Sinon, la méthode sera appelée deux fois.
Pour déterminer le contrôle qui a déclenché l'événement
Dans le gestionnaire d'événements, déclarez une variable dont le type correspond aux contrôles qui déclenchent l'événement.
Assignez le premier argument du gestionnaire d'événements à la variable, en effectuant un cast de cette dernière en type approprié.
L'exemple de code suivant montre le gestionnaire d'un événement Click d'un contrôle Button appelé par différents boutons. Le gestionnaire affiche la propriété ID du bouton qui a déclenché l'événement.
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; }