Freigeben über


Gewusst wie: Reagieren auf Ereignisse in Button-Webserversteuerelementen

Aktualisiert: November 2007

Sobald auf das Webserversteuerelement Button, LinkButton oder ImageButton geklickt wird, wird die aktuelle Seite an den Server übermittelt und dort verarbeitet.

So reagieren Sie auf ein Schaltflächenereignis

  • Erstellen Sie einen Ereignishandler für eines der folgenden Ereignisse:

    • Das Page_Load-Ereignis der Seite. Die Seite wird von der Schaltfläche an den Server übermittelt, daher wird die Methode immer ausgeführt. Verwenden Sie das Page_Load-Ereignis, wenn die Frage, auf welche Schaltfläche geklickt wurde, nicht so wichtig ist wie die Tatsache, dass das Formular abgeschickt wurde.

    • Das Click-Ereignis der Seite. Schreiben Sie einen Ereignishandler für dieses Ereignis, sobald wichtig ist, auf welche Schaltfläche geklickt wurde.

      Hinweis:

      Wenn ein ImageButton-Steuerelement verwendet wird und Sie die X- und Y-Koordinaten der Stelle bestimmen möchten, auf die der Benutzer geklickt hat, muss ein Ereignishandler für dieses Ereignis erstellt werden. Ausführliche Informationen finden Sie unter Gewusst wie: Bestimmen von Koordinaten in einem ImageButton-Webserversteuerelement.

    Im folgenden Beispiel wird eine mögliche Reaktion auf das Klicken eines Benutzers auf ein Button-Steuerelement gezeigt. Die Methode zeigt eine Meldung in einem Label-Webserversteuerelement an.

    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.";
    }
    

    Im folgenden Beispiel wird gezeigt, wie in einem Page_Load-Ereignishandler auf das Klicken auf eine Schaltfläche reagiert werden kann. Die Methode überprüft die IsPostBack-Eigenschaft einer Seite und stellt so fest, ob die Seite zum ersten Mal verarbeitet wird oder durch Klicken auf eine Schaltfläche gesendet wurde.

    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.";
       }
    }
    

    Im folgenden Beispiel wird ein Taschenrechner mit den vier Grundrechenarten für ganze Zahlen gezeigt. Indem alle Schaltflächen (Add, Subtract, Multiply und Divide) an dieselbe Methode gebunden werden, können alle Berechnungen an einer Stelle behandelt werden. Außerdem können Codewiederholungen vermieden werden. Die Schaltflächen werden in Visual Basic mit der AddHandler-Methode und in C# mit dem Operator += an die Calculate-Methode gebunden. Indem Fehlerbehandlungscode zur Calculate-Methode hinzugefügt wird, kann sichergestellt werden, dass es sich bei den Eingabewerten um ganze Zahlen handelt. Hierfür können auch die Validierungssteuerelemente, die für Web Forms zur Verfügung stehen, verwendet werden.

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

Siehe auch

Referenz

Übersicht über die Button-Webserversteuerelemente