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();
    }
    

Voir aussi

Référence

Vue d'ensemble des contrôles serveur Web Button