2017-02-07 195 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的参数相同。

在你的情况下,你会使用发件人来定义更改的控件,然后找到所需的值。

相关问题