Опубликован: 31.08.2006 | Уровень: специалист | Доступ: свободно
Лекция 12:

Использование массивов и коллекций для управления данными

Эксперименты с объектами из коллекции Controls

В следующих упражнениях вы будете использовать код программы для манипуляций объектами на форме с помощью коллекции Controls. Ваш проект будет иметь три объекта кнопок, и вы создадите процедуры событий, которые будут изменять свойства Text каждого из этих объектов, перемещать объекты вправо и специальным образом обрабатывать один из объектов группы. Для манипуляций с объектами при щелчках пользователя на кнопках программа будет использовать три цикла For Each...Next.

Использование цикла For Each ... Next для изменения свойств Text
  1. Чтобы закрыть текущий проект, щелкните на команде Close Solution (Закрыть решение) в меню File (Файл).
  2. В папке c:\vbnet03sbs\Гл.11 создайте новый проект Windows Application (Приложение Windows) на Visual Basic с именем My Controls Collection.
  3. Используйте элемент управления Button и нарисуйте в левой части формы три объекта кнопок, как показано ниже.


  4. С помощью окна Properties (Свойства) установите свойство Name третьего объекта кнопки ( Button3 ) на значение btnMoveObjects.
  5. Сделайте на объекте первой кнопки ( Button1 ) формы двойной щелчок мышью. В Редакторе кода появится процедура события Button1_Click.
  6. Введите следующие операторы программы:

    For Each ctrl In Controls
      ctrl.Text = "Нажми меня!"
    Next

    Это цикл For Each...Next перебирает коллекцию Controls формы по одному элементу управления и устанавливает свойство каждого из объектов на значение "Нажми меня!". В качестве переменной объекта цикл использует ctrl, которую вы объявите в следующем шаге.

  7. Прокрутите программный код формы на самый верх, и прямо под тэгом "Windows Form Designer generated code" ("Код, автоматически созданный конструктором форм Windows") введите следующие комментарий и объявление переменной:

    ' Объявление переменной типа Control для представления элементов
    ' управления формы
    Dim ctrl As Control

    Это объявление глобальной переменной создает переменную типа Control, которая будет представлять в программе текущие элементы управления формы. Вы объявляете эту переменную в общей области объявлений формы, так что она будет доступна во всех процедурах событий этой формы. Теперь запустите программу и измените свойство Text для каждой кнопки формы.

  8. Чтобы запустить программу, щелкните на кнопке Start (Начать), расположенной на стандартной панели инструментов.
  9. Щелкните на первой кнопке ( Button1 ) формы. Процедура события Button1_Click изменяет свойство Text для каждого элемента управления из коллекции Controls. Ваша форма будет выглядеть примерно так.


  10. Щелкните на кнопке Закрыть формы. Программа закроется. Теперь можно провести еще один эксперимент с коллекцией Controls. Используйте свойство Left для перемещения каждого элемента управления из коллекции Controls вправо.
Использование цикла For Each ... Next для перемещения элементов управления
  1. Снова отобразите форму, а затем сделайте двойной щелчок мышью на объекте второй кнопки ( Button2 ). Введите в процедуре события Button2_Click следующий код программы:

    For Each ctrl In Controls
      ctrl.Left = ctrl.Left + 25
    Next

    Каждый раз, когда пользователь будет щелкать на второй кнопке, этот цикл For Each...Next будет перебирать объекты в коллекции Controls и перемещать их на 25 пикселей вправо. (Чтобы переместить объекты на 25 пикселей влево, нужно вычитать 25.) Пиксель - это не зависящая от устройства единица измерения, которая позволяет точно расположить объекты в форме.

    Совет. В Visual Basic 6 для указания таких измерений вместо пикселей обычно использовались "твипы" (twips). За информацией о преобразовании существующего кода Visual Basic 6 с использованием измерения в твипах в код с использованием пикселей обратитесь к справочной системе Visual Studio и найдите в ней заголовок "ScaleMode Is Not Supported" ( ScaleMode не поддерживается).
  2. Как видно из введенной выше процедуры события, переменная ctrl обозначает текущий объект в коллекции и содержит те же установки свойств, что и представляемый ею объект. В этом цикле вы изменяете свойство Left, которое определяет положение объекта относительно левой границы формы.
  3. Щелкните на кнопке Start (Начать) стандартной панели инструментов. Программа запустится и в левой части формы появится три кнопки.
  4. Щелкните несколько раз на второй кнопке. Каждый раз, когда вы щелкаете на этой кнопке, объекты перемещаются вправо. После пяти щелчков ваш экран будет выглядеть примерно так, как показано на рисунке вверху следующей страницы.
  5. Чтобы завершить выполнение программы, щелкните на кнопке Закрыть формы.

Перемещение всех объектов формы, конечно, необязательно. Visual Basic позволяет обрабатывать члены коллекции и по отдельности. В следующем упражнении вы узнаете о том, как при перемещении двух объектов кнопок вправо сохранить положение третьей кнопки неизменным.


Сайдахмад Зарипов
Сайдахмад Зарипов
Жанболат Шаймерден
Жанболат Шаймерден

Можно ли выбирать язык для надписей и команд в среде разработки?

Андрей Гуменюк
Андрей Гуменюк
Молдова