订阅VB6中的C#.net事件

Rya*_*ham 5 .net vb6 com

我需要能够在VB6中处理.net事件.到目前为止,我通过让我看到c#class COM来设置它.我的VB6对象可以很好地调用方法,但现在我需要一些方法来从.net到VB进行通信.如果我向我的c#类添加一个事件,.net包装器似乎添加了一个add_EventName和remove_EventName,我认为这是订阅和取消订阅该事件.但是对于VB6来说我仍然是新手,所以我不确定如何使用它.

add_EventName似乎采用了EventNameEventHadler,但是我给它了什么?我尝试了sub但这给了我一个运行时错误.谁知道如何使用它?这是我的一个例子

Private oHost As HostService.IHost

Private Sub Form_Load()
    Set oHost = New HostService.Host
    oHost.Start
    oHost.add_EvalReceived EvalReceivedEventHandler
End Sub

Private Sub EvalReceivedEventHandler(ByVal sender As Variant, ByVal e As EvalReceivedEventArgs)
MsgBox "Eval Received in VB: " & e.Eval.TimeSent & ":" & e.Eval.FirstName & " " & e.Eval.LastName & " - " & e.Eval.Comments
End Sub
Run Code Online (Sandbox Code Playgroud)

所以oHost.add_EvalReceived行是错误的

Mar*_*rkJ 4

您可以尝试添加WithEvents到您的声明中oHost

Private WithEvents oHost As HostService.IHost
Run Code Online (Sandbox Code Playgroud)

然后 IDE 应该允许您在 上创建事件处理程序oHost。这就像创建Form_Load事件处理程序一样。代码窗口左上角的下拉列表应该允许您选择oHost

免责声明:我已经多次使用它来处理来自 COM 对象的事件。我从未真正尝试过通过互操作处理来自 .Net 对象的事件,但我认为您必须这样做。