Коллекции, принадлежащие контейнерам
Мы знакомы с такими объектами, как форма, рамка, панель, вкладка. Каждый из них может включать в себя другие элементы управления. Поэтому такие объекты называются контейнерами. У контейнера есть собственная коллекция, в которую автоматически заносятся элементы управления, входящие в контейнер. Поэтому специально заботиться о добавлении их в контейнер не нужно. Коллекция формы называется Controls. Коллекция рамки GroupBox1 является ее свойством Controls, поэтому к ней можно обращаться так: GroupBox1.Controls. К коллекции панели Panel1 можно обращаться так: Panel1.Controls и т.д. Пример:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Объект As Control
For Each Объект In Controls
Debug.WriteLine(Объект.Text)
Next
For Each Объект In Panel1.Controls
Debug.WriteLine(Объект.Text)
Next
End Sub
Во вкладках элементы управления принадлежат страницам вкладки. У каждой страницы – своя коллекция элементов управления. Пусть во вкладке TabControl1 имеется три страницы: TabPage1, TabPage2 и TabPage3. Тогда фрагмент
For Each Объект In TabPage2.Controls
Debug.WriteLine(Объект)
Next
распечатает элементы управления, находящиеся на 2-й странице. Сами страницы составляют коллекцию, принадлежащую вкладке. Поэтому фрагмент
For Each Объект In TabControl1.Controls
Debug.WriteLine(Объект.Name)
Next
распечатает имена всех страниц вкладки:
TabPage1
TabPage2
TabPage3
Получается коллекция в коллекции. Матрешка. Поэтому сработает такой оператор:
Debug.WriteLine(TabControl1.Controls(1).Controls(2))
Здесь распечатывается элемент управления, стоящий под номером 2 в коллекции элементов управления, принадлежащей некой странице. А страница эта стоит под номером 1 в коллекции страниц, принадлежащей вкладке TabControl1.