如何使用Visual Basic .NET中的“Handles”子句与使用C#编写的DLL?

时间:2010-09-08 02:35:21

标签: c# vb.net interop

在Visual Basic .NET应用程序中,有没有办法在用C#编写的DLL中引用的对象上使用Handles?编译代码会给我错误:

  

模块中的“句柄”必须指定一个   'WithEvents'变量用a限定   单一标识符。

我正在编写Visual Basic .NET应用程序,但我确实可以使用C#库的源代码。

我当前的代码看起来像这样:

WithEvents Friend Module As ModuleNamespace.Module
Sub EventHandler() Handles Module.Events.Event1
    Console.WriteLine("Event1 fired.")
End Sub

用实际名称替换ModuleModuleNamespaceEvent1

2 个答案:

答案 0 :(得分:2)

您需要一个模块级变量来包含对象实例。航空代码:

 Private WithEvents mMyObject As CSharpObject

 Private Sub MyEvent(...) Handles mMyObject.SomeEvent 

答案 1 :(得分:1)

听起来你没有一个对象实例可以方便绑定的事件。您可以尝试使用AddHandler而不是Handles关键字吗?

例如:

Private Sub BindEvents(ByVal someObject AS ClassInLibrary)

  AddHandler someObject.EventName, AddressOf Foo

End Sub

Private Sub Foo(ByVal sender As Object, ByVal e As EventArgs)

End Sub