< Day Day Up > |
A type declares an event in much the same way that it declares a subroutine. Class Button Private X, Y As Integer Public Event Click() Public Event Moved(ByVal X As Integer, ByVal Y As Integer) End Class In this example, the Button class declares two events: a Click event that will be raised when the button is pressed and a Moved event that will be fired when the button is moved somewhere else on the screen. The Moved event has two parameters that represent the coordinates of where the button is being moved to. These parameters will be passed to any method that handles the event. An event is raised by using the RaiseEvent statement, which has much the same syntax as a method invocation. Sub Move(ByVal X As Integer, ByVal Y As Integer) Me.X = X Me.Y = Y ' Notify other types that we have moved. RaiseEvent Moved(X, Y) End Sub This example moves the button to a new location and then raises the Moved event, passing in the new coordinates of the button. One thing to keep in mind about events is that they are multicast ; this means that an event can be handled by more than one handler. In the following example, the same Click event is handled by two separate types. Class Form1 Public WithEvents Button1 As Button Sub Clicked() Handles Button1.Click ... End Sub End Class Class Form2 Public WithEvents Button2 As Button Sub Clicked() Handles Button2.Click ... End Sub End Class Module Test Sub Main() Dim f1 As Form1 = New Form1() Dim f2 As Form2 = New Form2() Dim b As Button = New Button() f1.Button1 = b f2.Button2 = b End Sub End Module Because both f1 and f2 handle the Click event for the same instance of the Button class, when that button is clicked, both Form1.Clicked and Form2.Clicked will be called. The order in which the event handlers are called is determined by the .NET Framework at runtime. |
< Day Day Up > |