2015-10-14 20 views
-1

值委託函數我有另一個類,如下所示如何分配在VB.NET

Public Class Connect 

Public Delegate Function RP_ClientConnect(ByVal hwndClient As IntPtr, _ 
             ByVal deviceID As Short, _ 
             ByVal protocol As String) As Short 

我有一個功能,其中我試圖將值賦給了一個委託函數委託功能。但我不確定如何去做。我試過但無法解決它。

我想在委託函數中傳遞deviceID和協議的新值。

Private Sub btnConnect_Click(sender As Object, e As EventArgs) Handles btnConnect.Click 

Dim myNewClientConnect As Connect 
Dim iDNumber as Integer= 10 
Dim prot as String = "CAN" 
myNewClientConnect(Nothing, iDNumber, prot) 

End Sub 

我是新來vb.Net並期待從你的人得到一些建議。

+1

你的委託行聲明瞭一個類型 - 需要有一個函數匹配那個簽名。然後你可以聲明一個var As RP_ClientConnect來將該方法的地址存儲到可以在其他地方稍後調用的委託。 'myDelegate = Addressof(Name of function)' – Plutonix

回答

1

你沒有調用委託,你調用了你的類的構造函數。

首先,創建具有相同簽名的委託的方法:

Private Function MyDelegate(ByVal hwndClient As IntPtr, _ 
          ByVal deviceID As Short, _ 
          ByVal protocol As String) As Short 
    'Do something. 
End Function 

然後定義通過調用創建委託的實例,並調用與代表相關聯的方法的方法內置的調用方法。

Private Sub btnConnect_Click(sender As Object, e As EventArgs) Handles btnConnect.Click 
    ' Create an instance of the delegate. 
    Dim d As RP_ClientConnect = AddressOf MyDelegate 
    ' Call the method. 
    d.Invoke(Nothing, iDNumber, prot) 
End Sub 

您可以參考這個MSDN page瞭解更多詳情。

+0

我不太確定如何/何時得到您的答案的否決票,因爲它肯定不是有意的。道歉,因爲我甚至沒有在這個搜索。如果你可以編輯你的文章 - 我不願意,因爲我沒有添加/刪除任何東西! - 我會刪除我的不當投票。 –

+0

謝謝!完成並完成。 –