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