2013-11-04 106 views
1

我繼續嘗試學習VB.net,我經常訪問這裏。C#VB.net委託子

所以,我又回到了一個稍有不同的問題。我以前收到很大的幫助,並希望再次獲得幫助。

我有這樣的CSHARP代碼:

public delegate void MyHandler(string DataLine); 
foo.Handler = new MyHandler(MySub); 
void MySub(string DataLine); 

(當我將鼠標懸停在 「MyHandler的」 時,VS助手說: 「MyHandler.MyHandler(無效(字符串)目標)」

我想設置了在VB.net代表,但我似乎無法涉及的三個項目,使他們都一起工作:

Private Delegate Sub MyHandler(ByRef DataLine as string) 
?????? as MyHandler 
Private Sub MySub (ByRef DataLine as string) 

是否「??????」需要一個昏暗{}東西,或聲明{something}或???或者是否有另外兩條線之一出現錯誤?

(讓我知道如果有任何缺失的信息)

感謝

查理

回答

2

在VB.Net,你可以使用AddressOf分配一個SubDelegate

foo.Handler = AddressOf MySub 
+0

謝謝,簡單的複製和粘貼給了我一個語法錯誤。現在我有了更深入的瞭解,我有一個出發點。 – charliee1151

0

鑑於此:

Private Delegate Sub MyHandler(ByRef DataLine as string) 

Private Sub MySub(ByRef DataLine as string) 
    ' Do something here 
End Sub 

您可以聲明和實例的委託,像這樣:

Dim TheHandler As MyHandler 
TheHandler = AddressOf MySub 
+0

我相信這更接近這個概念,但我對「TheHandler = AddressOf MySub」的範圍/位置感到困惑。兩個「私人...」行都在類內,但在任何模塊之外,所以它們應該是全班級的。同樣,我已將「Dim TheHandler ...」放在同一範圍內。 「MyHandler = ...」目前在Form_Load函數中,但我不確定是否正確。在其他地方需要時它不會被隱藏嗎?我想我需要編輯我的原始問題來解釋更多細節。 – charliee1151