如何使用VB.NET在AddHandler中传递参数

时间:2012-11-15 15:54:06

标签: vb.net

这就是我想要做的。我正在使用autoback创建一个动态检查,点击后,将转到我的子程序并执行某些操作。我试图传递的两个参数是checkox所在的表和复选框id的名称。但是我收到了错误

  

AddressOf必须是没有括号或

的方法的名称      

方法没有与发件人兼容的签名作为对象,e system.eventArgs“。这是我的代码。

 chkSel = New CheckBox
 chkSel.ID = "check_" & CStr(a)              
 chkSel.AutoPostBack = True

  'This is where I get the error
  AddHandler chkSel.CheckedChanged, AddressOf change_operating_items(tableName, "check_" & CStr(a))  
 tblcell.Controls.Add(chkSel)
 tblrow.Cells.Add(tblcell)

1 个答案:

答案 0 :(得分:6)

注册事件处理程序时,不能传递参数。

相反,您可以在自定义事件的情况下引发该事件时传递它们。

您需要处理CheckedChanged事件,将Sender转换为CheckBox并使用ID属性。

Sub change_operating_items(sender As Object, e As EventArgs) 
    Dim chk = DirectCast(sender, CheckBox)
    Dim id = chk.ID
    ' do something with it '
EndSub