2017-02-07 53 views
0

使用此添加處理程序時出現問題。它一直說我不知道爲什麼我會得到這個'Addressof'錯誤?

「AddressOf操作數必須是方法的名稱(不帶圓括號)」。

我不知道我做了什麼錯誤發生這種情況。 爲補充處理程序的代碼:

AddHandler NudQuantityOfItem(a).SelectedItem, AddressOf TotalPrice(T)

Totalprice代碼:

`Public Sub Totalprice(ByVal a As Integer) 
    For T = 1 To CInt(CustomerMenu.NudQuantityOfItem.SelectedItem) 
     TotalItemPriceCalculation(T, a) 
    Next 
End Sub` 

Quantity代碼:

NudQuantityOfItem(a) = New numericupdowncounter 
    NudQuantityOfItem(a).Location = New Point(X, Y) 
    NudQuantityofitem(a).Width = 23 :  cboQuantity(i).Height = 33` 
+3

它應該是'AddressOf StarterQuantityPrice'(不帶參數)。就像消息說的那樣...你必須找到另一種方法來獲取那個參數。通常的方式是通過'sender As Object'。 –

+0

您編寫它的方式,StarterQuantityPrice(i)必須是返回委託的函數。 –

+0

檢查此答案是一個很好的示例:http://stackoverflow.com/a/21420015/1220550 –

回答

0

我還不能肯定這但我認爲AddressOf的目標與hooked事件需要相同的簽名。

例如

AddHandler c.TextChanged, AddressOf SetDirty 

Private Sub SetDirty(ByVal sender As Object, ByVal e As System.EventArgs) 
    If Not mbDirty AndAlso Not mbFormLoad Then 
     mbDirty = True 
     .... 
End Sub 

請注意,SetDirty與TextChanged的參數相同。

在你的情況下,你會使用發件人來定義更改的控件,然後找到所需的值。