com - 有人可以帮助我处理来自 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();
解决方案
使用@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 代码窗口的左侧下拉列表中。右侧的下拉菜单将显示可用的事件。