在 VB6 中订阅 C# .net 事件

Subscribe to C# .net Event in VB6(在 VB6 中订阅 C# .net 事件)
本文介绍了在 VB6 中订阅 C# .net 事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要能够在 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 事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
quot;Overflowquot; compiler error with -9223372036854775808L(编译器错误-9223372036854775808L(Q;溢出Q))
Visual Studio 2010 ReportViewer Assembly References(Visual Studio 2010 ReportViewer程序集引用)
Weird behaviour when I open a reportviewer in WPF(在WPF中打开报表查看器时出现奇怪的行为)
how do i pass parameters to aspnet reportviewer(如何将参数传递给aspnet report查看器)