HTML Controls Handling Control Events

265

6.3.2 HTML Controls

The controls defined in the System.Web.UI.HtmlControls namespace are: HtmlAnchor Wraps the HTML a tag. HtmlButton Wraps the HTML button tag. HtmlForm Wraps the HTML form tag. HtmlGenericControl Represents any HTML tag such as body that isnt wrapped by a specific HTML server control. HtmlImage Wraps the HTML img tag. HtmlInputButton Wraps the HTML input type=button , input type=submit , and input type=reset tags. HtmlInputCheckBox Wraps the HTML input type=checkbox tag. HtmlInputFile Wraps the HTML input type=file tag. HtmlInputHidden Wraps the HTML input type=hidden tag. HtmlInputImage Wraps the HTML input type=image tag. HtmlInputRadioButton Wraps the HTML input type=radio tag. HtmlInputText Wraps the HTML input type=text and input type=password tags. 266 HtmlSelect Wraps the HTML select tag. HtmlTable Wraps the HTML table tag. HtmlTableCell Wraps the HTML td and th tags. HtmlTableRow Wraps the HTML tr tag. HtmlTextArea Wraps the HTML textarea tag.

6.3.3 Handling Control Events

Controls on a web form are represented in the code-behind class as fields—one field for each control. For example, when the Visual Studio .NET Web Forms Designer is used to add a text box to a form, the following declaration is added to the code-behind class: Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox This declaration doesnt instantiate the control; it only defines a field that can hold a reference to a control of type TextBox. In addition, the designer adds this tag to the web page: asp:TextBox id=TextBox1 style=Z-INDEX: 105; LEFT: 8px; POSITION: absolute; TOP: 8px runat=server asp:TextBox The asp:TextBox tag signifies that ASP.NET should instantiate a TextBox control when a browser requests this page. The id=TextBox1 attribute names the control TextBox1. This name is what associates the control with the TextBox1 field in the code-behind class. If code behind is not being used, it is not necessary to declare a member variable to hold a reference to the control. The ASP.NET framework will implicitly do this when the web page is compiled. As discussed in Chapt er 2 , when a field declaration includes the WithEvents keyword, the containing class can handle events raised by the referenced object. To do so, the containing class defines a handler method with a signature matching the event signature. The handler method includes a Handles clause to link the method to the desired event on the object. For example, here is the definition of a handler method for the TextChanged event of TextBox1: Private Sub TextBox1_TextChanged _ ByVal sender As System.Object, _ ByVal e As System.EventArgs _ Handles TextBox1.TextChanged ... End Sub 267 The event-handler method can be given any name, but it is a common convention to use a name of the form FieldName _ EventName . Also by convention, event signatures for controls conform to the signature shown, with the exception of the e parameter being some other type derived from the EventArgs type. The sender parameter passed to the handler method holds a reference to the object that fired the event, and the e parameter holds a reference to an object that provides any extra information needed for the event. Events that pass a generic EventArgs argument have no event information to pass. Events that pass an argument of a type derived from EventArgs pass additional information within the fields of the passed object. You can determine the correct signature for handling a specific event by referring to the controls documentation or by using Visual Studio .NETs built-in object browser. In addition, the Visual Studio .NET Web Forms Designer can automatically generate a handler-method declaration for any event exposed by any control on a given form.

6.3.4 Programmatically Instantiating Controls