Control Events

Controls on a form are represented in code as fields—one field for each control. For example, when the Visual Studio .NET Windows Forms Designer is used to add a text box to a form, the following declaration is added to the form class:

Private WithEvents TextBox1 As System.Windows.Forms.TextBox

This declaration doesn’t instantiate the control; it only defines a field that can hold a reference to a control of type TextBox. The control is instantiated in the InitializeComponent subroutine, which is called in the Form class’s constructor. The code that instantiates the control looks like this:

Me.TextBox1 = New System.Windows.Forms.TextBox(  )

As discussed in Chapter 2, when a field declaration includes the WithEvents keyword, the parent class can handle events that the referenced object raises. To do so, the parent class must define a handler method having the appropriate signature, and the definition of the method must include a Handles clause to link the method to the appropriate event on the appropriate object. For example, here is the definition of a handler method for the Click event of TextBox1:

Private Sub TextBox1_Click( _
   ByVal sender As Object, _
   ByVal e As System.EventArgs _
) Handles TextBox1.Click
   ' ...
End Sub

The event-handler method can be given any name, but it is a common convention to use a name of the form FieldName _ EventName. The event-handler method’s signature must correspond to the signature of the event being handled. By convention, event signatures ...

Get Programming Visual Basic .NET now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.