プロシージャが指定したイベントを処理することを宣言します。
構文
proceduredeclaration Handles eventlist
部品
proceduredeclaration
イベントを処理するプロシージャの Sub
プロシージャ宣言。
eventlist
処理する proceduredeclaration
のイベントの一覧をコンマで区切って指定します。 イベントは、現在のクラスの基底クラス、または WithEvents
キーワードを使用して宣言されたオブジェクトによって発生する必要があります。
注釈
プロシージャ宣言の末尾にある Handles
キーワードを使用して、 WithEvents
キーワードを使用して宣言されたオブジェクト変数によって発生したイベントを処理します。
Handles
キーワードは、基底クラスからのイベントを処理するために派生クラスでも使用できます。
Handles
キーワードと AddHandler
ステートメントを使用すると、特定のプロシージャが特定のイベントを処理するように指定できますが、違いがあります。 プロシージャを定義する場合は、 Handles
キーワードを使用して、特定のイベントを処理するように指定します。
AddHandler
ステートメントは、実行時にプロシージャをイベントに接続します。 詳細については、「 AddHandler ステートメント」を参照してください。
カスタム イベントの場合、アプリケーションはプロシージャをイベント ハンドラーとして追加するときに、イベントの AddHandler
アクセサーを呼び出します。 カスタム イベントの詳細については、「 イベント ステートメント」を参照してください。
例 1
Public Class ContainerClass
' Module or class level declaration.
WithEvents Obj As New Class1
Public Class Class1
' Declare an event.
Public Event Ev_Event()
Sub CauseSomeEvent()
' Raise an event.
RaiseEvent Ev_Event()
End Sub
End Class
Sub EventHandler() Handles Obj.Ev_Event
' Handle the event.
MsgBox("EventHandler caught event.")
End Sub
' Call the TestEvents procedure from an instance of the ContainerClass
' class to test the Ev_Event event and the event handler.
Public Sub TestEvents()
Obj.CauseSomeEvent()
End Sub
End Class
次の例では、派生クラスが Handles
ステートメントを使用して基底クラスのイベントを処理する方法を示します。
Public Class BaseClass
' Declare an event.
Event Ev1()
End Class
Class DerivedClass
Inherits BaseClass
Sub TestEvents() Handles MyBase.Ev1
' Add code to handle this event.
End Sub
End Class
例 2
次の例には、 WPF アプリケーション プロジェクトの 2 つのボタン イベント ハンドラーが含まれています。
Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
MessageBox.Show(sender.Name & " clicked")
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click
MessageBox.Show(sender.Name & " clicked")
End Sub
例 3
次の例は、前の例と同じです。
Handles
句のeventlist
には、両方のボタンのイベントが含まれています。
Private Sub Button_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click, Button2.Click
MessageBox.Show(sender.Name & " clicked")
End Sub
こちらも参照ください
.NET