我需要将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
Run Code Online (Sandbox Code Playgroud)
我不能做什么,但想要;
AddHandler mybutton.Click, AddressOf PrintMessage(groupID)
Private Sub PrintMessage(ByVal groupID as Integer)
MessageBox.Show("Dynamic event happened!" & groupID .tostring)
End Sub
Run Code Online (Sandbox Code Playgroud)
Jar*_*Par 37
没有办法自己做这件事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
Run Code Online (Sandbox Code Playgroud)
您可以创建自己的按钮类并向其中添加任何您想要的内容
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
Run Code Online (Sandbox Code Playgroud)
从 VB 2010 开始你可以简单地写
Public Class MyButton
Inherits Button
Public Property GroupID As Integer
Public Property AnotherInteger As Integer
End Class
Run Code Online (Sandbox Code Playgroud)
您可以通过投射来访问该按钮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
Run Code Online (Sandbox Code Playgroud)
这些新属性甚至可以在属性窗口(在 下)中设置Misc。
当前项目中定义的控件会自动出现在工具箱中。