如何从vb.net中关联的动态创建按钮的单击调用动态创建的标签

时间:2013-09-14 17:26:35

标签: vb.net buttonclick dynamic-controls

我在表单中有一个标签。在表单加载时,我逐行从文本文件中获取文本,并在表单Tabcontrol Tabpage上将它们显示为标签,并在它们旁边动态显示按钮。现在在这些按钮上单击我要复制关联标签中的文本。任何人都可以建议在Nextbtn_Click事件中放什么?

Dim FILE_NAME As String = "D:\1.txt"    
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim i As Integer = 1
    For Each line As String In System.IO.File.ReadAllLines(FILE_NAME)
        Dim NextLabel As New Label
        Dim Nextbtn As New Button
        NextLabel.Text = line
        Nextbtn.Text = "Copy"
        NextLabel.Height = 22
        Nextbtn.Width = 55
        Nextbtn.Height = 22
        NextLabel.BackColor = Color.Yellow
        TabPage2.Controls.Add(NextLabel)
        TabPage2.Controls.Add(Nextbtn)
        NextLabel.Location = New Point(10, 10 * i + ((i - 1) * NextLabel.Height))
        Nextbtn.Location = New Point(120, 10 * i + ((i - 1) * Nextbtn.Height))
        AddHandler Nextbtn.Click, AddressOf Me.Nextbtn_Click
        i += 1
    Next
End Sub

Private Sub Nextbtn_Click(sender As Object, e As EventArgs)

End Sub

2 个答案:

答案 0 :(得分:1)

存储assc。标签属性中的标签,您可以在单击按钮时将其强制转换。发件人对象是当前单击的按钮。

Dim FILE_NAME As String = "D:\1.txt"    
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim i As Integer = 1
    For Each line As String In System.IO.File.ReadAllLines(FILE_NAME)
        Dim NextLabel As New Label
        Dim Nextbtn As New Button
        Nextbtn.Tag = NextLabel
        NextLabel.Text = line
        Nextbtn.Text = "Copy"
        NextLabel.Height = 22
        Nextbtn.Width = 55
        Nextbtn.Height = 22
        NextLabel.BackColor = Color.Yellow
        TabPage2.Controls.Add(NextLabel)
        TabPage2.Controls.Add(Nextbtn)
        NextLabel.Location = New Point(10, 10 * i + ((i - 1) * NextLabel.Height))
        Nextbtn.Location = New Point(120, 10 * i + ((i - 1) * Nextbtn.Height))
        AddHandler Nextbtn.Click, AddressOf Me.Nextbtn_Click
        i += 1
    Next
End Sub

Private Sub Nextbtn_Click(sender As Object, e As EventArgs)
    Dim s As String = DirectCast(DirectCast(sender, Button).Tag, Label).Text
End Sub

答案 1 :(得分:0)

Private Sub Clicked(ByVal sender As Object, ByVal e As EventArgs)
    Dim b As Button = DirectCast(sender, Button)
    TextBox2.Text = b.Name
    Clipboard.SetText(b.Name)

End Sub