我正在构建一个自定义控件,我想要做的是让事件调用此事件OnMenuShow。现在我想要做的是在我的控件中处理此事件以显示一个菜单,但允许用户实现我的自定义控件来处理父窗体内的事件,以便在需要时显示不同的菜单。所以用户代码看起来像这样。
Public Sub Control_OnMenuShow(sender as Object, e as CustomEventArgs) handles Control.OnMenyShow
'DO some work
e.handled = true
end Sub
我只是不确定如何防止事件在控件内部的代码中触发一次事件。如果有人能指出我的方向非常有帮助
-Nathan
答案 0 :(得分:0)
在你的控制中:
Public Event MenuShow As EventHandler
Public Overridable Sub OnMenuShow()
RaiseEvent MenuShow(New EventArgs)
End Sub
现在,消费者可能会覆盖OnMenuShow,它会绕过您的raiseevent语句,而无需“检查”任何内容。
答案 1 :(得分:0)
我发现汉斯'答案回应最适合我的问题,如果他把它留在答案中我会标记他的答案。我将离开我最终编码的方式以备将来参考。
Public Event MenuShow As EventHandler(Of MenuShowEventArgs)
Public Overridable Sub OnMenuShowEvent()
Dim args As New MenuShowEventArgs(False, "Control")
RaiseEvent MenuShow(Me, args)
if args.handled then return
'DO WORK
End Sub