不管怎样,我需要将groupID (和另一个整数)链接到我动态添加的按钮。有什么想法吗?
我能做什么;
AddHandler mybutton.Click, AddressOf PrintMessage
Private Sub PrintMessage(ByVal sender As System.Object, ByVal e As System.EventArgs)
MessageBox.Show("Dynamic event happened!")
End Sub我不能做但又想做的事;
AddHandler mybutton.Click, AddressOf PrintMessage(groupID)
Private Sub PrintMessage(ByVal groupID as Integer)
MessageBox.Show("Dynamic event happened!" & groupID .tostring)
End Sub发布于 2012-02-05 02:45:13
使用AddressOf本身无法做到这一点。你要找的是一个lambda表达式。
AddHandler myButton.Click, Function(sender, e) PrintMessage(groupId)
Private Sub PrintMessage(ByVal groupID as Integer)
MessageBox.Show("Dynamic event happened!" & groupID .tostring)
End Sub发布于 2012-02-05 02:50:26
您可以创建自己的按钮类,并向其中添加任何您想要的内容
Public Class MyButton
Inherits Button
Private _groupID As Integer
Public Property GroupID() As Integer
Get
Return _groupID
End Get
Set(ByVal value As Integer)
_groupID = value
End Set
End Property
Private _anotherInteger As Integer
Public Property AnotherInteger() As Integer
Get
Return _anotherInteger
End Get
Set(ByVal value As Integer)
_anotherInteger = value
End Set
End Property
End Class从VB2010开始,您可以简单地编写
Public Class MyButton
Inherits Button
Public Property GroupID As Integer
Public Property AnotherInteger As Integer
End Class可以通过转换sender来访问该按钮
Private Sub PrintMessage(ByVal sender As Object, ByVal e As EventArgs)
Dim btn = DirectCast(sender, MyButton)
MessageBox.Show( _
String.Format("GroupID = {0}, AnotherInteger = {1}", _
btn.GroupID, btn.AnotherInteger))
End Sub这些新属性甚至可以在属性窗口中设置(在Misc下)。
在当前项目中定义的控件会自动出现在工具箱中。
发布于 2012-02-05 02:44:33
使用按钮的Tag属性。
Button1.Tag = someObjectAddressOf获取方法的地址,因此您不能将参数传递给它。
https://stackoverflow.com/questions/9143385
复制相似问题