代码之家  ›  专栏  ›  技术社区  ›  Ken Keenan

对实现另一个类的类使用WithEvents时出现运行时错误459

  •  7
  • Ken Keenan  · 技术社区  · 14 年前

    我正在Word中开发一个VBA项目,在使用实现另一个类的类时遇到了处理事件的问题。

    我定义了一个空类, IMyInterface

    Public Sub Xyz()
    End Sub
    
    Public Event SomeEvent()
    

    还有一节课, MyClass 实现上述功能:

    Implements IMyInterface
    
    Public Event SomeEvent()
    
    Public Sub Xyz()
      ' ... code ...
      RaiseEvent SomeEvent
    End Sub
    
    Private Sub IMyInterface_Xyz()
       Xyz
    End  Sub
    

    如果我创建第三个类, OtherClass ,声明具有接口类类型的成员变量:

    Private WithEvents mMy As IMyInterface
    

    Set mMy = New MyClass
    

    出现运行时错误“459”:此组件不支持这组事件。

    这个 MSDN page

    “您试图使用WithEvents 变量的组件不能 用作的事件源 指定的事件集。例如, 对象,然后创建另一个对象 实现第一个对象的。 尽管你可能认为你可以 对象,这不是自动 案例。实现仅实现

    上面的话基本上概括了我要做的事情。措辞“这不是自动的情况”,而不是“这是完全不可能的”,似乎表明有一些手工工作,我需要做一些让它工作,但它没有告诉我

    1 回复  |  直到 9 年前
        1
  •  5
  •   Fink    14 年前

    显然,不允许事件通过接口类传递到具体类中,就像您希望使用“Implements”一样。在本文中,它声明:“抽象接口的事件声明不包括在由具体类继承的接口中。我没有发现任何地方,这已被公认为一个错误;不过,似乎确实是这样。”

    以下是源代码的链接: http://www.devx.com/getHelpOn/10MinuteSolution/20416

    推荐文章