0

我正在构建一个自定义控件,我想做的是有一个事件让我们将此事件称为 OnMenuShow。现在我想做的是在我的控件中处理此事件以显示一个菜单,但允许实现我的自定义控件的用户在父窗体中处理事件以显示不同的菜单(如果他们愿意)。所以用户代码看起来像这样。

    Public Sub Control_OnMenuShow(sender as Object, e as CustomEventArgs) handles Control.OnMenyShow
      'DO some work
       e.handled = true
    end Sub

我只是不确定如何防止事件在事件中为控件内的代码触发两次。如果有人能指出我正确的方向,那将非常有帮助

-内森

4

2 回答 2

0

在您的控制下:

Public Event MenuShow As EventHandler



Public Overridable Sub OnMenuShow()
  RaiseEvent MenuShow(New EventArgs)
End Sub

现在,消费者可以覆盖 OnMenuShow,这将绕过您的 raiseevent 语句,而您无需“检查”任何内容。

于 2012-08-03T20:17:19.137 回答
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
于 2012-08-06T15:27:03.380 回答