I converted a project from vb6 to vb.net where I found a given control that was inside a TabControl via the collection Controls as such
Frm.Controls(\"Contr
You can use Me.Controls.Find("name", True)
to search the form and all its child controlsto find controls with given name. The result is an array containing found controls.
For example:
Dim control = Me.Controls.Find("textbox1", True).FirstOrDefault()
If (control IsNot Nothing) Then
MessageBox.Show(control.Name)
End If
Here's an example of how to recursively loop through all controls by parent:
Private Function GetAllControlsRecursive(ByVal list As List(Of Control), ByVal parent As Control) As List(Of Control)
If parent Is Nothing Then Return list
list.Add(parent)
For Each child As Control In parent.Controls
GetAllControlsRecursive(list, child)
Next
Return list
End Function
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim allControls As New List(Of Control)
For Each ctrl In GetAllControlsRecursive(allControls, Me) '<= Me is the Form or you can use your TabControl
'do something here...
If Not IsNothing(ctrl.Parent) Then
Debug.Print(ctrl.Parent.Name & " - " & ctrl.Name)
Else
Debug.Print(ctrl.Name)
End If
Next
End Sub