Обработка событий, представленных в классе .NET через COM в VB6
Мой тестовый .NET (библиотека классов, зарегистрированная для взаимодействия в настройках компилятора) код:
Imports System.Runtime.InteropServices
<InterfaceType(ComInterfaceType.InterfaceIsIDispatch), ComVisible(True)> _
Public Interface MyEventInterface
<DispId(1)> Event Exploded(ByVal Text As String)
<DispId(2)> Sub PushRedButton()
End Interface
<ClassInterface(ClassInterfaceType.None)> _
Public Class EventTest
Implements MyEventInterface
Public Event Exploded(ByVal Text As String) Implements MyEventInterface.Exploded
Public Sub PushRedButton() Implements MyEventInterface.PushRedButton
RaiseEvent Exploded("Bang")
End Sub
End Class
Мой тестовый код winforms приложения VB6 (который ссылается на вышеупомянутую библиотеку классов):
Public ct As New ComTest1.EventTest
Private Sub Command1_Click()
ct.add_Exploded (ExplodedHandler)
ct.PushRedButton
ct.remove_Exploded (ExplodedHandler)
End Sub
Private Sub ExplodedHandler(ByVal Text As String)
MsgBox Text
End Sub
В частности, я не уверен, как настроить обработчик в VB6, ошибка компиляции, которую я получаю, это «Аргумент не является обязательным» в этой строке в VB6:
ct.add_Exploded (ExplodedHandler)