У меня есть старый проект 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. Вместо того, чтобы вызывать пользовательское событие Click(...)
, я могу просто позвонить mTabEventsHandler.Click(...)
.
Спасибо за предложение!