Comment : répondre à des événements du contrôle serveur Web Button
Mise à jour : novembre 2007
Lorsque l'utilisateur clique sur un contrôle serveur Web Button, LinkButton ou ImageButton, la page active est soumise au serveur pour y être traitée.
Pour répondre à un événement de bouton
Créez un gestionnaire d'événements pour l'un des événements suivants :
L'événement Page_Load de la page. Comme le bouton poste toujours la page sur le serveur, cette méthode est toujours exécutée. Utilisez l'événement Page_Load lorsque le bouton sélectionné n'a pas d'importance et que compte seulement le fait que le formulaire a été soumis.
L'événement Click du bouton. Écrivez un gestionnaire d'événements pour cet événement lorsqu'il est important de savoir sur quel bouton l'utilisateur a cliqué.
Remarque : Si vous utilisez un contrôle ImageButton et voulez connaître les coordonnées x et y du bouton sélectionné, créez un gestionnaire d'événements pour cet événement. Pour plus d'informations, consultez Comment : déterminer des coordonnées dans un contrôle serveur Web ImageButton.
L'exemple suivant montre comment vous pouvez répondre à un clic du contrôle serveur Web Button. La méthode affiche un message dans un contrôle serveur Web Label.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text="You clicked a button" End Sub
public void Button1_Click (object sender, System.EventArgs e) { Label1.Text="You clicked a button."; }
L'exemple suivant montre comment vous pouvez répondre à un clic de bouton dans un gestionnaire d'événements Page_Load. La méthode teste la propriété IsPostBack de la page pour déterminer si c'est la première fois que celle-ci est traitée ou si elle a été envoyée par un clic de bouton.
Private Sub Page_Load(ByVal Sender As System.Object, ByVal e _ As System.EventArgs) Handles MyBase.Load If Not IsPostback Then ' This is called the first time the page has loaded. ' The user will not have been able to click any buttons yet. Else ' This is called if the form has been posted back, possibly ' by a button click. Me.Label1.Text = "You clicked a button." End If End Sub
private void Page_Load(object sender, System.EventArgs e) { if (!IsPostBack) { // Evals true first time browser hits the page. } else { // This is called if the form has been posted back, possibly // by a button click. this.Label1.Text = "You clicked a button."; } }
L'exemple suivant montre une simple calculatrice d'entiers à quatre fonctions. En liant tous les boutons (Add, Subtract, Multiply et Divide) à la même méthode, vous pouvez gérer tous les calculs au même endroit et éviter le code répétitif. La liaison des boutons à la méthode Calculate est effectuée à l'aide de la méthode AddHandler en Visual Basic et de l'opérateur += en C#. Pour vous assurer que les valeurs d'entrée sont des entiers, vous pouvez ajouter un code de gestion des erreurs à la méthode Calculate ou utiliser les contrôles de validation disponibles pour les Web Forms.
' Set the CommandName property of the buttons to "Add", ' "Subtract", "Multiply", and "Divide". Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load AddHandler Me.btnAdd.Click, AddressOf Calculate AddHandler Me.btnSubtract.Click, AddressOf Calculate AddHandler Me.btnMultiply.Click, AddressOf Calculate AddHandler Me.btnDivide.Click, AddressOf Calculate End Sub Public Sub Calculate(ByVal sender As Object, ByVal e As System.EventArgs) Dim op1 As Integer = CType(Me.TextBox1.Text, Integer) Dim op2 As Integer = CType(Me.TextBox2.Text, Integer) Dim result As Integer Select Case CType(sender, Button).CommandName Case "Add" result = op1 + op2 Case "Subtract" result = op1 - op2 Case "Multiply" result = op1 * op2 Case "Divide" ' Divide two numbers and return an integer result. If op2 > 0 Then result = op1 \ op2 Else result = 0 End If Case Else ' Error handling code here. End Select Label1.Text = result.ToString() End Sub
// Set the CommandName property of the buttons to "Add", _ // "Subtract", "Multiply", and "Divide". protected void Page_Load(object sender, EventArgs e) { btnAdd.Click += new System.EventHandler(this.Calculate); btnSubtract.Click += new System.EventHandler(this.Calculate); btnMultiply.Click += new System.EventHandler(this.Calculate); btnDivide.Click += new System.EventHandler(this.Calculate); } protected void Calculate (object sender, System.EventArgs e) { int op1 = Convert.ToInt16(TextBox1.Text); int op2 = Convert.ToInt16(TextBox2.Text); int result = 0; switch(((Button)sender).CommandName) { case "Add" : result = op1 + op2; break; case "Subtract" : result = op1 - op2; break; case "Multiply" : result = op1 * op2; break; case "Divide" : // Integer division. if (op2 > 0) result = op1 / op2; else result = 0; break; default: // Error handling code here. break; } Label1.Text = result.ToString(); }