我通过代码添加按钮。所以有一个容器控件,每次用户点击“添加按钮”时,按钮就会以这种方式添加到容器控件中:
Dim btnItem As New Button
btnItem.Text = strName
btnItem.Name = "btn-" & strName
AddHandler btnItem.Click, AddressOf f_ViewNameInfo
ButtonContainer.Controls.Add(btnItem)
问题出在f_ViewNameInfo
函数内,我怎么知道哪个按钮发送命令。在这个函数中,我想得到按钮名称的strName
部分,然后从中工作。我试图给函数提供参数,但是上面代码的AddHandler
部分引发了错误,因为我不应该在那里给出参数。
答案 0 :(得分:1)
查看Click
事件的定义:
Public Event Click(ByVal sender As Object, ByVal e As System.EventArgs)
使用这两个参数定义您的函数f_ViewNameInfo
,并且可以从sender
参数获取引发它的按钮(您需要先将DirectCast(sender, Button)
转换为按钮):
Public Sub f_ViewNameInfo(ByVal sender As Object, ByVal e As System.EventArgs)
Dim str As String = DirectCast(sender, Button).Name
End Function
请注意,您应该在此处添加更多安全性等,例如在尝试投射之前检查sender
是否真的是一个按钮。