VB.NET 4 の質問です。
イベント E を含むクラス A が存在するとします。別のクラス (B) では、型 A の変数が WithEvents として宣言されています。A のコード内のある時点で、"RaiseEvent E" コマンドがあります。その後、E が B 内で処理されたかどうかを知る方法はありますか (イベント E のハンドラーがクラス B に存在する場合のみ)。
明らかに、E にはパラメーター (ブール値) を含めることができるため、B 内のハンドラーがそれを処理する場合、このパラメーターを True に設定できます。これは私が求めているものではありません。パラメータを使用せずに、これを達成するための組み込みの.NET方法があるかどうかを知りたいです。
私が回避しようとしているもののコード例(パラメーター DoSomethingWasHandled の使用):
Public Class A
Public Event DoSomething(ByRef DoSomethingWasHandled As Boolean)
Public Sub RaiseDoSomething()
Dim DoSomethingWasHandled As Boolean = False
RaiseEvent DoSomething(DoSomethingWasHandled)
End Sub
End Class
Public Class B
Public WithEvents SomeA As New A
Private Sub HandleDoSomething(ByRef DoSomethingWasHandled As Boolean) Handles SomeA.DoSomething
DoSomethingWasHandled = True
End Sub
End Class
存在するかどうかを尋ねているコード例:
Public Class A
Public Event DoSomething()
Public Sub RaiseDoSomething()
RaiseEvent DoSomething()
If DoSomething.WasHandled Then '<-- Does this check exist in any form? ***
DoSomethingElse()
End If
End Sub
End Class
Public Class B
Public WithEvents SomeA As New A
Private Sub HandleDoSomething() Handles SomeA.DoSomething
'DoStuff...
End Sub
End Class
*** これは、E のイベント ハンドラがクラス B に存在するかどうかをチェックし、存在する場合は True を返し、存在しない場合は False を返します。