ПОНЯТНО О Visual Basic NET (том 2)

Коллекции, принадлежащие контейнерам


Мы знакомы с такими объектами, как форма, рамка, панель, вкладка. Каждый из них может включать в себя другие элементы управления. Поэтому такие объекты называются контейнерами. У контейнера есть собственная коллекция, в которую автоматически заносятся элементы управления, входящие в контейнер. Поэтому специально заботиться о добавлении их в контейнер не нужно. Коллекция формы называется 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.



Содержание раздела