gpt4 book ai didi

oop - VB6 实现和事件

转载 作者:行者123 更新时间:2023-12-04 18:28:33 24 4
gpt4 key购买 nike

我有一个较旧的 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

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

我实现了一个回调接口(interface),我称之为 ITabEventsHandler .它看起来像这样:
Option Explicit

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

End Sub

然后我添加了 Implements ITabEventsHandler到我的表单并将表单作为 ITabEventsHandler 传递我的 clsTab 初始化程序的参数。而不是提出自定义 Click(...)事件,我可以调用 mTabEventsHandler.Click(...) .

感谢您的建议!

最佳答案

您根本无法在 VB6 中“实现”源接口(interface)。所以简短的回答是“不,你不能这样做”。您可以通过直接 typelib 编辑来破解它,但这会很快变得丑陋。

如果您必须通过不同的(模拟)类“实现”这些,您可以在您的情况下考虑回调接口(interface)。

关于oop - VB6 实现和事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1213488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com