How to: Respond to Button Web Server Control Events
When a Button, LinkButton, or ImageButton Web server control is clicked, the current page is submitted to the server, where it is processed.
To respond to a button event
Create an event handler for one of the following events:
The page's Page_Load event. Because the button always posts the page to the server, this method will always run. Use the Page_Load event when it is not important which button was clicked, only that the form was submitted.
The button's Click event. Write an event handler for this event when it is important to know which button was clicked.
Note If you are working with an ImageButton control and want to know the x and y coordinates of the user's click, you must create an event handler for this event. For details, see How to: Determine Coordinates in an ImageButton Web Server Control.
The following example shows how you can respond when a user clicks a Button Web server control. The method displays a message in a Label Web server control.
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."; }
The following example shows how you can respond to a button click in a Page_Load event handler. The method tests the page's IsPostBack property to determine whether this is the first time the page has been processed or whether it was submitted by a button click.
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."; } }
The following example shows a simple four-function integer calculator. By binding all of the buttons (Add, Subtract, Multiply, and Divide) to the same method, you can handle all the calculations in one place and avoid repetitive code. Binding the buttons to the Calculate method is accomplished by using the AddHandler method in Visual Basic, and by using the += operator in C#. To ensure that the input values are integers, you could add error-handling code to the Calculate method or use the validation controls that are available for 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(); }