0

是否可以通过属性访问器监听父类对象的事件?

我尝试过的(一个最小的例子):

Public Class ParentFoo
  Private WithEvents m_bar As EventyObj
  Public Property Bar() As EventyObj
    Get
      Return m_bar
    End Get
    Set(ByVal value As EventyObj)
      m_bar = value
    End Set
  End Property
End Class

Public Class ChildFoo
  Inherits ParentFoo

  [...]

  Public Sub Bar_OnShout() Handles Bar.Shout
    ' Some logic
  End Sub
End Class

我收到的特定错误消息(VS2005)是“Handles 子句需要在包含类型或其基本类型之一中定义的 WithEvents 变量。” 通过公共属性访问私有 WithEvents 变量是否会去除“WithEvents”?

4

1 回答 1

2

在 ParentFoo 中:

Public Overridable Sub OnShout() Handles m_bar.Shout
'No Logic Necessary
End Sub

在 ChildFoo 中:

Public Overrides OnShout()
'Logic Here
End Sub

由于当 m_bar 引发 Shout 事件并且您在 ChildFoo 中覆盖它时,ParentFoo 将调用 OnShout,因此您的 ChildFoo 的 OnShout 将处理该事件。

于 2013-06-26T22:04:44.510 回答