1

这就是我想要做的。我正在创建一个带有自动返回的动态检查,当单击它时,它将转到我的子例程并执行某些操作。我试图传递的两个参数是 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)
4

1 回答 1

7

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

相反,如果发生自定义事件,您可以在引发该事件时传递它们。

在这里,您需要处理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 
于 2012-11-15T16:02:12.647 回答