Com 有人能帮我从c#dll处理vb6中的事件吗

Com 有人能帮我从c#dll处理vb6中的事件吗,com,vb6,com-interop,Com,Vb6,Com Interop,我发现了一个不错的NFC读卡应用程序,它在winforms中运行得非常好 可在此处找到代码: 吉特: 但我有个问题。我现在需要在com for vb6中实现这一点 我必须“复制”事件挂钩,如下面的代码所示 我成功地向vb6公开了方法和事件 NFC = new NFCReader(); NFC.CardInserted += new NFCReader.CardEventHandlerDelgate(Card_Inserted); NFC.CardEjected += new NFCReade

我发现了一个不错的NFC读卡应用程序,它在winforms中运行得非常好

可在此处找到代码:

吉特:

但我有个问题。我现在需要在com for 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提供的信息,为了在VB6中使用NFC阅读器,首先必须使.NET库COM可见。如果你有源代码,你可以很容易地做到这一点。否则,如果您只有一个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中“代码”窗口的左侧下拉列表中。右侧下拉列表将显示可用的事件。

请参阅本页及相关页开始的资料。感谢您的回答,我成功地向vb6公开了事件和方法。如果有机会,请将问题标记为已回答,如果遇到其他编程问题,请返回堆栈溢出!