gpt4 book ai didi

c# - 如何在 VB6 中订阅实例对象的事件?

转载 作者:行者123 更新时间:2023-11-30 22:24:07 24 4
gpt4 key购买 nike

我用 C# 编写了一个类库,我想在 VBA (VB6) 中使用它。

创建我的类型库、使用 regasm 在计算机上注册类型库、在 VB6 中创建 .Net 对象的实例、访问属性和调用方法,一切都很好。

但我正在尝试订阅我的类型库中的实例级对象引发的一些事件。

下面是我的 C# 类中声明的事件处理程序之一的示例(它们都是通用事件处理程序):

public event EventHandler<Events.NewCall> NewCall;

Events.NewCall 是一个继承自 EventArgs 的类,如下所示:

using System;

namespace MySolution.Events
{
/// <summary>
/// A call has been created ready for use
/// </summary>
public class NewCall : EventArgs
{
/// <summary>
/// An automatic property
/// </summary>
public string AutoProperty { get; private set; }

public NewCall(string rawData)
{
//Some logic here
autoProperty = rawData;
}
}
}

我像这样在类(class)中提出这个事件:

var checkNewCall = NewCall;
if (checkNewCall != null) { checkNewCall(this, new Events.NewCall("my raw data")); }

在 C# 中,我可以像这样实例化我的电话对象并订阅事件:

MySolution.Phone _phone = new MySolution.Phone();
_phone.NewCall += AnEventHandler;

事件处理程序如下所示:

void AnEventHandler(object sender, Splicecom.Events.NewCall e)
{
//Do stuff with e
}

在 VB6 中,我可以像这样实例化我的 Phone 对象:

Dim thisPhone As New MySolution.Phone

键入 thisPhone. 不会给我任何智能感知,但我已经习惯了,我没有得到类中其他方法的智能感知,但我仍然可以在不编译的情况下调用它们/运行时错误。

如下所示,我可以看到我要处理的事件:

Event

但这是 MySolution 库的智能感知,与 Phone 类的实例 thisPhone 相对。 p>

在 VB6 中,如何订阅 MySolution.Phone 对象的 thisPhone 实例上的 NewCall 事件。

我试过这个:

Option Compare Database

Dim WithEvents thisPhone As MySolution.Phone

Private Sub Command0_Click()

thisPhone = New MySolution.Phone
thisPhone.NewCall = MyFunction()

End Sub

Private Sub MyFunction()

'Do stuff

End Sub

当我点击 Command0 时,出现此错误:

Error

最佳答案

VB6 事件处理程序在编译时完全基于例程的名称绑定(bind)到事件。试试这个:

Option Compare Database

Dim WithEvents thisPhone As MySolution.Phone

Private Sub Command0_Click()

thisPhone = New MySolution.Phone

End Sub

' Name of this routine is <withEventsVariableName>_<eventName> '
Private Sub thisPhone_NewCall()

' Do stuff '

End Sub

关于c# - 如何在 VB6 中订阅实例对象的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12951832/

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