问题描述
我需要能够在 VB6 中处理 .net 事件.到目前为止,我通过使我的 c# 类 COM 可见来设置它.我的 VB6 对象可以很好地调用它的方法,但现在我需要某种方式从 .net 到 VB 进行通信.如果我向我的 c# 类添加一个事件,.net 包装器似乎添加了一个 add_EventName 和 remove_EventName 我假设这是订阅和取消订阅该事件.但是当谈到 VB6 时,我仍然是一个新手,所以我不太确定如何使用它.
I need to get be able to handle a .net event in VB6. So far i have it set up by making me c# class COM visible. My VB6 object can call methods on it fine but now i need some way to communicate from .net to VB. If i add an event to my c# class the .net wrapper seems to add an add_EventName and remove_EventName which i assume this is to subscribe and unsubscribe to the event. But i'm still a novice when it comes to VB6 and come so i'm not really sure how to use it.
add_EventName 似乎需要一个 EventNameEventHadler 但我给它什么呢?我尝试了 sub 但这给了我一个运行时错误.有谁知道如何使用这个?这是我所拥有的示例
The add_EventName seems to take an EventNameEventHadler but what do i give it? i tried the sub but this gives me a runtime error. Anyone know how to use this? Here is an example of what i have
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
所以 oHost.add_EvalReceived 行是错误的
So oHost.add_EvalReceived line is wrong
推荐答案
您可以尝试将 WithEvents
添加到您的 oHost
You could try adding WithEvents
to your declaration of oHost
Private WithEvents oHost As HostService.IHost
那么 IDE 应该允许您在 oHost
上创建事件处理程序.这就像制作您的 Form_Load
事件处理程序一样.代码窗口左上角的下拉菜单应该让您选择 oHost
.
Then the IDE should allow you to create event handlers on oHost
. It's just like making your Form_Load
event handler. The drop-down at the top-left of the code window should let you select oHost
.
免责声明:我已经多次使用它来处理来自 COM 对象的事件.我实际上从未尝试过通过互操作处理来自 .Net 对象的事件,但我认为您必须这样做.
Disclaimer: I've used this many times to handle events from COM objects. I've never actually tried handling events from a .Net object through interop, but I would think you must do it like this.
这篇关于在 VB6 中订阅 C# .net 事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!