2010-09-08 32 views
1

在Visual Basic .NET應用程序中,有沒有辦法在用C#編寫的DLL中引用的對象上使用Handles?編譯代碼給我的錯誤:如何使用Visual Basic .NET中的「Handles」子句和使用C#編寫的DLL?

'Handles' in modules must specify a 'WithEvents' variable qualified with a single identifier.

我正在寫在Visual Basic .NET應用程序,但我有可用的C#庫的源代碼。

我當前的代碼看起來是這樣的:

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

更換ModuleModuleNamespaceEvent1與實際名稱。

回答

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 
+0

我使用的AddHandler現在,但我只是想知道是否有完成同樣的目標,更高效/更清潔的方式,因爲運行時綁定不需要我的應用程序。 – Hello71 2010-09-09 00:23:33

+0

除非你有像MarkJ這樣的模塊級變量,否則你必須自己調用AddHandler。當你使用WithEvents和Handle時,編譯器實際上會發射一個屬性並在setter中調用AddHandler本身。 – 2010-09-09 01:06:08

2

你需要一個模塊級變量包含對象實例。航空代碼:

Private WithEvents mMyObject As CSharpObject 

Private Sub MyEvent(...) Handles mMyObject.SomeEvent 
相關問題