Condividi tramite


Procedura: rispondere a eventi del controllo server Web Button

Aggiornamento: novembre 2007

Quando viene fatto clic su un controllo server Web Button, LinkButton o ImageButton, la pagina corrente viene inoltrata al server, dove viene elaborata.

Per rispondere a un evento Button

  • Creare un gestore eventi per uno degli eventi seguenti:

    • Evento Page_Load della pagina. Poiché il pulsante invia sempre la pagina al server, questo metodo viene sempre eseguito. Utilizzare l'evento Page_Load quando non è importante quale pulsante viene scelto, ma solo l'inoltro del form.

    • Evento Click del pulsante. Scrivere un gestore per questo evento quando è importante sapere quale pulsante è stato scelto.

      Nota:

      Se si utilizza un controllo ImageButton e si desidera conoscere le coordinate x e y del clic dell'utente, creare un gestore eventi per questo evento. Per informazioni dettagliate, vedere Procedura: determinare le coordinate in un controllo server Web ImageButton.

    Nell'esempio riportato di seguito viene illustrato come rispondere quando un utente fa clic su un controllo server Web Button. Il metodo visualizza un messaggio in un controllo server 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.";
    }
    

    Nell'esempio riportato di seguito viene illustrato come rispondere alla scelta di un pulsante in un gestore eventi Page_Load. Il metodo esegue il test della proprietà IsPostBack della pagina per determinare se è la prima volta che si elabora la pagina o se questa è stata inoltrata mediante la scelta di un pulsante.

    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'esempio seguente illustra una calcolatrice di numeri interi a quattro funzioni. L'associazione di tutti i pulsanti (Add, Subtract, Multiply e Divide) allo stesso metodo consente di gestire tutti i calcoli da una sola posizione ed evitare codice ripetitivo. Questa associazione dei pulsanti al metodo Calculate viene effettuata mediante il metodo AddHandler in Visual Basic e mediante l'operatore += in C#. Per verificare che i valori immessi siano di tipo integer, aggiungere codice di gestione degli errori al metodo Calculate oppure utilizzare i controlli con convalida disponibili per i Web Form.

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

Vedere anche

Riferimenti

Cenni preliminari sui controlli server Web pulsante