繁体   English   中英

VB6实现和事件

[英]VB6 Implements & events

我有一个较旧的VB6项目,我正在尝试添加单元测试。 我通过模拟对象打破了类中的依赖关系。 一切都很顺利,直到我发现了一些引发事件的依赖,现在我已经碰壁了。

这是一个我正在努力做的事情的一个简单例子:

ITab.cls:

Option Explicit

Public Event Click(tabNumber As Integer)

Public Sub SomeOtherFunction()

End Sub

clsRealTab.cls:

Option Explicit
Implements ITab

Public Event Click(tabNumber As Integer)

Public Sub ITab_SomeOtherFunction()
    'code here'
End Sub

frmMain.frm:

Option Explicit

Private WithEvents mTab as ITab

Public Sub Main()
    Set mTab = New clsRealTab 'gives "Object or class does not support the set of events" error'
End Sub

有没有人知道是否有办法让这项工作或其他方式来处理这种情况?

我实现了一个名为ITabEventsHandler的回调接口。 它看起来像这样:

Option Explicit

Public Sub Click(intPreviousTab As Integer, objSSTab As Object)

End Sub

然后我将Implements ITabEventsHandler添加到我的表单中,并将表单作为ITabEventsHandler参数传递给我的clsTab初始化程序。 我可以只调用mTabEventsHandler.Click(...)代替自定义Click(...)事件。

谢谢你的建议!

你根本无法在VB6中“实现”源接口。 所以简短的回答是“不,你不能这样做”。 您可以使用直接类型库编辑来破解它,但这会很快变得难看。

如果必须通过不同的(模拟)类“实现”这些接口,则可以考虑使用回调接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM