首页 > 解决方案 > 有人可以帮助我处理来自 c# dll 的 vb6 中的事件吗

问题描述

我发现了一个很好的 NFC 读卡应用程序,它在 winforms 中非常好用。

代码在这里找到:

NfcReader:一个非常简单的 C# NFC 库,支持插入和丢弃事件

Git:https ://github.com/h4kbas/NfcReader

但我有一个问题。我现在需要在 com 中为 vb6 进行这项工作。

我必须“复制”事件挂钩,就像下面的代码一样。

我成功地向 vb6 公开了方法和事件。

NFC = new NFCReader();

NFC.CardInserted += new NFCReader.CardEventHandlerDelgate(Card_Inserted);
NFC.CardEjected += new NFCReader.CardEventHandlerDelgate(Card_Ejected);
NFC.DeviceDisconnected += new NFCReader.CardEventHandlerDelgate(Device_disconected);
NFC.StartCardMonitoring();

标签: comvb6com-interop

解决方案


使用@kunif 提供的信息,您首先必须使 .NET 库 COM 可见,以便在 VB6 中使用 NFC 阅读器。如果你有源代码,你可以很容易地做到这一点。否则,如果您只有一个 DLL,您可以编写一个包装 DLL 并使该 COM 可见。当您说“我成功地将事件和方法暴露给 vb6”时,听起来您可能已经这样做了。

下一步是在 VB6 中添加对库的引用:Project > References...

然后,您可以创建 NFCReader 的实例:

Public WithEvents objNFC As NFCReader

Private Sub Form_Load()

    ' Create NFCReader object
    Set objNFC = New NFCReader

    objNFC.StartCardMonitoring

End Sub

' Card Inserted event handler
Private Sub objNFC_CardInserted()
    ' Handle Card Inserted event
End Sub

' Card Ejected event handler
Private Sub objNFC_CardEjected()
    ' Handle Card Ejected event
End Sub

' Device Disconnected event handler
Private Sub objNFC_DeviceDisconnected()
    ' Handle Device Disconnected event
End Sub

添加对 DLL 的引用后,您应该会看到事件及其参数显示在 VB6 中。确保将对象声明为 WithEvents,并且该对象将出现在 Visual Studio 代码窗口的左侧下拉列表中。右侧的下拉菜单将显示可用的事件。


推荐阅读