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

Массивы элементов управления


Задача: Выстроить вдоль нижней кромки формы на равных расстояниях друг от друга 40 элементов управления PictureBox – улыбающихся рожиц, так, как это сделано на Рис. 15.1.

Рис. 15.1

При нажатии кнопки эти рожицы должны прыгнуть вверх, так, как на Рис. 15.2.

Рис. 15.2

Трудности: По-старинке нам нужно вручную поместить на форму 40 элементов управления PictureBox и загрузить в них картинку рожицы, что само по себе утомительно. Расположить их вручную на равных расстояниях без помощи VS тоже нелегко. VB дает возможность изящно преодолеть все эти трудности программным путем.

Первый способ – использование коллекции. Поместите вручную на форму 40 элементов PictureBox. Поскольку все они автоматически входят в коллекцию элементов управления формы (загляните вперед, в 16.2), вы можете запрограммировать их правильное расположение и прыжки. Но вручную тащить на форму или копировать 40 элементов не хочется. Поэтому изберем второй способ.

Второй способ – использование массива. В 6.1.2 мы не тащили вручную на форму элемент управления, а создавали его программным путем. Перечитайте тот раздел. Здесь мы поступим совершенно аналогично, только создадим не один элемент управления, а массив из 40 элементов управления. Вот программа:

Dim Рожица(40) As PictureBox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim i As Integer

        For i = 1 To 40



            Рожица(i) = New PictureBox             'Создаем очередной объект

            Рожица(i).SizeMode = PictureBoxSizeMode.AutoSize

            Рожица(i).Image = Image.FromFile("FACE02.ICO")

            'Помещаем на свои места все объекты массива:

            Рожица(i).Top = Me.Height - 50

            Рожица(i).Left = 20 * i

            Me.Controls.Add(Рожица(i))     'Добавляем новую рожицу в коллекцию

        Next

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim i As Integer
        For i = 1 To 40
            Рожица(i).Top = Рожица(i).Top - i                 'Прыжок всех объектов
        Next
End Sub
Пояснения: Как обычно, первой выполняется процедура Form1_Load, которая все создает и расставляет. Оператор
            Рожица(i).SizeMode = PictureBoxSizeMode.AutoSize
понадобился для того, чтобы каждый PictureBox уменьшился до размеров рожицы.
Затем процедура Button1_Click обеспечивает прыжок всех элементов управления, каждого на свою высоту.
Как только элемент управления создан, вы можете как угодно задавать и менять его свойства, обращаясь к нему по индексу. Например, оператор
        Рожица(38).Visible = False
делает невидимой 38-ю рожицу.
Обратите внимание, что пока я для простоты создаю элементы управления без возможности обработки свойственных им событий. Так, на созданную кнопку нажимать бесполезно. Как обрабатывать события элементов управления, созданных в коде, я написал в 22.13.

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