oop – VB6实现和事件

前端之家收集整理的这篇文章主要介绍了oop – VB6实现和事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个旧的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

然后,我将ImabeventsHandler应用到我的表单中,并将表单作为ITabEventsHandler参数传递给我的clsTab初始化程序.而不是提高自定义Click(…)事件,我可以调用mTabEventsHandler.Click(…).

感谢您的建议!

你根本不能在VB6中实现源接口.所以简短的答案是“不,你不能这样做”.你可以用直接的typelib编辑进行攻击,但是这样会很快就会变得丑陋.

如果你必须通过不同的(mock)类“实现”这些,你可以考虑你的情况下的回调接口.

猜你在找的VB相关文章