Как получить доступ к элементам управления многослойными панелями в vb.net
Я хочу получить доступ ко всем элементам управления в моей форме с помощью этого кода:
Для каждого ПК в Myform.control
делать что-то
Моя проблема в том, что у меня есть многослойные панели в myform. Например, "Myform" содержит (textbox1,textbox 2,combobox1,panle1,panel2).
Панель1 содержит (панель 11 и текстовое поле 3)
панель 2 содержит (панель 22 и текстовое поле 4 и выпадающий список 2)
Кроме того, панель 22 содержит (textbox5 и panle222)
Как получить доступ ко всем элементам управления (текстовое поле и поле со списком) в "Myform", не обращая внимания на то, находятся ли они на панели или нет.
Любая помощь с благодарностью.
2 ответа
Примерно так должно это сделать:
Private Sub EnumerateControl(parentControl As Control)
For Each child As Control In parentControl.Controls
Debug.WriteLine(child.Name)
If child.HasChildren Then EnumerateControl(child)
Next
End Sub
Затем вызовите это, чтобы использовать это:
EnumerateControl(Me) 'Pass the form control to start the enumeration
Ключевым моментом здесь является проверка наличия дочерних элементов в рассматриваемом элементе управления и перечисление всех элементов управления в этом элементе путем вызова EnumerateControl
рекурсивно
Вы можете получить к ним доступ рекурсивным способом, таким как:
Public Sub ProcessControls(ByRef Controls As ControlCollection)
For Each pc As Control In Controls
'Do whathever you want
If pc.Controls.Count Then 'If that control has child, process them
ProcessControls(pc.Controls)
End If
Next
End Sub