获取通过单击事件上的代码创建的按钮的名称

时间:2014-05-22 10:38:21

标签: vb.net button dynamic

我通过代码添加按钮。所以有一个容器控件,每次用户点击“添加按钮”时,按钮就会以这种方式添加到容器控件中:

 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部分引发了错误,因为我不应该在那里给出参数。

1 个答案:

答案 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是否真的是一个按钮。