Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 访问按钮单击事件上的动态面板_Vb.net_Button_Dynamic_Panel - Fatal编程技术网

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