gpt4 book ai didi

.net - 在 VB6 中订阅 C# .net 事件

转载 作者:行者123 更新时间:2023-12-04 17:39:44 24 4
gpt4 key购买 nike

我需要能够在 VB6 中处理 .net 事件。到目前为止,我已经通过使我的 c# 类 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

所以 oHost.add_EvalReceived 行是错误的

最佳答案

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

Private WithEvents oHost As HostService.IHost

然后 IDE 应该允许您在 oHost 上创建事件处理程序。 .这就像制作您的 Form_Load事件处理程序。代码窗口左上角的下拉菜单应该让您选择 oHost .

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

关于.net - 在 VB6 中订阅 C# .net 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7075497/

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