Vb.net 访问按钮单击事件上的动态面板
我有几个窗格和按钮创建动态现在我需要访问面板上的按钮点击事件 这就是我创建动态按钮和窗格的方式Vb.net 访问按钮单击事件上的动态面板,vb.net,button,dynamic,panel,Vb.net,Button,Dynamic,Panel,我有几个窗格和按钮创建动态现在我需要访问面板上的按钮点击事件 这就是我创建动态按钮和窗格的方式 While rst.Read() Dim panel As New Panel Dim panel1 As New Panel Dim mylink As New LinkLabel Dim btn As New Button Dim Tooltip As New ToolTip() Tooltip.
While rst.Read()
Dim panel As New Panel
Dim panel1 As New Panel
Dim mylink As New LinkLabel
Dim btn As New Button
Dim Tooltip As New ToolTip()
Tooltip.SetToolTip(mylink, rst!form_name)
mylink.Name = rst!form_name
AddHandler mylink.Click, AddressOf HandleDynamicLinkLabelClick
AddHandler btn.Click, AddressOf HandleDynamicButtonClick
mylink.Dock = DockStyle.Left
btn.Name = rst!form_name
btn.Tag = rst!form_name
panel1.Tag = rst!form_name
btn.Text = "<"
panel.Controls.Add(mylink)
panel.Controls.Add(btn)
panel1.Name = rst!form_name
panel1.Controls.Add(lbl)
Me.FlowLayoutPanel1.Controls.Add(panel)
Me.FlowLayoutPanel1.Controls.Add(panel1)
End While
rst.Close()
您需要能够主动“知道”动态创建的控件的名称,因此请尝试以下方法:
Private Name1 As String
Private Name2 As String
while rst.read
Dim panel As New Panel
Dim panel1 As New Panel
Dim mylink As New LinkLabel
Dim btn As New Button
Dim Tooltip As New ToolTip()
Tooltip.SetToolTip(mylink, rst!form_name)
mylink.Name = rst!form_name
AddHandler mylink.Click, AddressOf HandleDynamicLinkLabelClick
AddHandler btn.Click, AddressOf HandleDynamicButtonClick
mylink.Dock = DockStyle.Left
Name1 = cstr(rst!form_name)
btn.Name = Name1
btn.Tag = rst!form_name
panel1.Tag = rst!form_name
btn.Text = "<"
panel.Controls.Add(mylink)
panel.Controls.Add(btn)
Name2 = Cstr(rst!form_name)
panel1.Name = Name2
panel1.Controls.Add(lbl)
Me.FlowLayoutPanel1.Controls.Add(panel)
Me.FlowLayoutPanel1.Controls.Add(panel1)
end while
Private Sub HandleDynamicButtonClick(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As Button = DirectCast(sender, Button)
Select Case btn.Name
Case Name1
'do something here
End Select
End Sub
Private Name1作为字符串
私有名称2作为字符串
而rst.read
将面板调暗为新面板
将面板1调暗为新面板
将mylink暗显为新链接标签
将btn变暗为新按钮
将工具提示变暗为新工具提示()
设置工具提示(mylink,rst!表单名称)
mylink.Name=rst!表格名称
AddHandler mylink.Click,HandleDynamicLinkLabelClick的地址
AddHandler btn.单击,HandleDynamicButton的地址单击
mylink.Dock=DockStyle.Left
名称1=cstr(rst!表格名称)
btn.Name=Name1
btn.Tag=rst!表格名称
panel1.Tag=rst!表格名称
btn.Text=“您已经在存储”rst!按钮名称中的“表单名称”:
btn.Name = rst!form_name
那么为什么不将面板存储在标签中呢
btn.Tag = panel1
然后,您可以在处理程序中检索它:
Private Sub HandleDynamicButtonClick(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As Button = DirectCast(sender, Button)
Dim panel1 As Panel = DirectCast(btn.Tag, Panel)
' ... use "panel1" somehow ...
End Sub
您可以通过dim panel=DirectCast(FlowLayoutPanel1.Control(“panel1”),panel)获得它
Private Sub HandleDynamicButtonClick(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As Button = DirectCast(sender, Button)
Dim panel1 As Panel = DirectCast(btn.Tag, Panel)
' ... use "panel1" somehow ...
End Sub