我正在 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”:此组件不支持这组事件。
The MSDN 页面 http://msdn.microsoft.com/en-us/library/aa264500%28VS.60%29.aspx对于此错误消息指出:
“您尝试使用 WithEvents
带有不能的组件的变量
作为事件源
指定的事件集。例如,
你可能正在沉没事件
对象,然后创建另一个对象
实现第一个对象。
尽管你可能认为你可以
从已实施的事件中吸收事件
对象,这不是自动的
案件。实现仅实现一个
方法和属性的接口。”
以上几乎总结了我正在尝试做的事情。 “情况并非自动如此”,而不是“这完全不可能”,似乎表明我需要做一些手动工作才能使其正常工作,但事实并非如此告诉我what!有谁知道这在VBA中是否可行?
显然,事件不允许像您想要使用“Implements”一样通过接口类传递到具体类中。在这篇文章中,它指出:“抽象接口的事件声明不包含在具体类继承的接口中。我没有在任何地方发现这已被确认为一个错误;但是,它似乎确实是一个错误。 ”
这是来源的链接:http://www.devx.com/getHelpOn/10MinuteSolution/20416 http://www.devx.com/getHelpOn/10MinuteSolution/20416
:-(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)