Further to the comments here is an example of what we mean
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim currTop As Integer = 10
For i As Integer = 1 To 10
Dim t As TextBox = New TextBox()
t.Top = currTop
t.Name = "tb" + i.ToString()
Dim l As Label = New Label()
l.Top = currTop
l.Left = t.Left + t.Width + 10
l.Name = "label" + i.ToString()
l.Text = l.Name
currTop += t.Height + 10
AddHandler t.TextChanged, AddressOf MyText_TextChanged
Me.Controls.Add(t)
Me.Controls.Add(l)
Next
End Sub
Private Sub MyText_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim tb As TextBox = DirectCast(sender, TextBox)
Dim ln As String = tb.Name
ln = ln.Replace("tb", "label")
Console.WriteLine("Text box {0} chosen. Label text is {1}", tb.Name, Me.Controls(ln).Text)
End Sub