Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 1447 / 158 | Оценка: 4.31 / 4.00 | Длительность: 25:42:00
Лекция 13:

Класс Control и стандартные элементы управления (обзор)

Адресация к элементам дочерних контейнеров

Форма может иметь много дочерних элементов управления. Если это каркас приложения, то взаимодействовать с элементом можно через его события. Но когда это диалоговое окно со сложными настройками, которое при закрытии должно передавать выбор пользователя со всех своих элементов, то здесь может потребоваться программный опрос всех элементов. Естественно, что вызывающей стороне нужен доступ ко всем элементам дочерней формы.

Существует много способов для решения такой задачи. Можно, например, объявить в дочернем контейнере именные ссылки на свои элементы как общедоступные поля или свойства и адресоваться через них. Но чаще применяют другой способ, учитывая, что все ссылки на элементы хранятся в коллекции Controls контейнера. Если в дочернем контейнере промаркировать его элементы в свойствах Name (ожидает тип string ) или Tag (принимает любой тип, поскольку объявлено как object ), то найти такой элемент в коллекции по его уникальному признаку не составит труда.

Коллекция Controls, начиная с версии .NET Framework 2.0, способна вести себя как ассоциативный массив, в котором ключ доступа к элементам представляет собой пару " целое_число-строка ". Строка представляет собой значение, заданное в свойстве Name дочернего элемента. Это означает, что адресоваться к элементу в контейнере можно либо по индексу, либо по имени, которое присвоено свойству Name (при условии, что оно уникально в рамках одной коллекции).

Свойство Controls является экземпляром класса Control.ControlCollection, который имеет методы Contains() и Find(). Метод Contains() возвращает true, если проверяемый объект является членом коллекции. Метод Find() проверяет свойство Name всех элементов коллекции на соответствие заданному значению и возвращает массив ссылок найденных элементов. Вторым аргументом метода Find() является булев флаг, устанавливающий режим поиска: искать до первого найденного или продолжать поиск до конца.

Чтобы проиллюстрировать рассмотренные способы адресации к элементам коллекции, создадим проект, в котором для облегчения проектирования пользовательского интерфейса форм воспользуемся средствами оболочки Visual Studio 2005.

Прежде, чем приступать к использованию визуальных средств IDE, уместно сделать одно важное замечание. Когда программист создает интерфейс пользователя через визуальный конструктор оболочки, то последний генерирует код по своей собственной схеме. И желательно своими действиями по прямому редактированию кода интерфейса в этот порядок не вмешиваться, а все делать через графический редактор и вспомогательные панели среды проектирования. Хотя разбираться в этом вопросе следует (но не обязательно).

В IDE C++Builder код компоновки интерфейса формы хранится в текстовом файле с расширением frm, а рабочий код размещен в паре h - и cpp -файлов. В Visual Studio 2005 код формы хранится в текстовом файле с расширением Designer.cs, а рабочий код размещен в файле с расширением cs и файле с точкой входа Program.cs.

Создадим приложение, в котором из главного окна будет вызываться диалоговое окно с элементами управления. После закрытия диалогового окна выполним опрос его элементов и выведем полученную информацию в клиентской области главного окна. Требуемые элементы управления будем переносить на форму проекта из панели инструментов Toolbox оболочки.

  • Выполните команду File/New/Project и создайте проект типа Windows Application с именем FirstWinApp

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


Сгенерированная мастером форма будет главной формой нашего примера

  • В панели Solution Explorer переименуйте файл Form1.cs в MainForm.cs

Обратите внимание, что оболочка переименовала вспомогательные файлы и класс главной формы.

  • Перенесите из панели Toolbox на главную форму и настройте через панель Properties элементы управления в соответствии с приведенной ниже таблицей свойств
Таблица 13.1 . Таблица свойств главной формы MainForm
Элемент Свойство Значение Описание
Form Text Главное окно приложения Текст строки заголовка
FormBorderStyle Sizable С изменяемым интерактивно размером
Size 600, 450 Размеры окна в пикселах с соотношением 4/3 (640/480, 800/600, 1024/768)
Icon Иконка системного меню в заголовке окна (прилагается)
StartPosition CenterScreen Начальная позиция при запуске
Button Name btnCreateDialogBox Программное имя кнопки вызова диалогового окна
Anchor Bottom Сохранять постоянным растояние до нижнего края родителя
AutoSize True Подстраивать размер кнопки под надпись
Text Диалог Надпись на кнопке
TextBox Name txtShowProperties Имя объекта для отображения свойств диалогового окна
Dock Top Приклеиться к верхнему краю клиентской области родителя по всей ширине
Multiline True Многострочный техт
ScrollBars Vertical Отображать вертикальную полосу прокрутки

На этом проектирование интерфейсной части главного окна приложения завершена. Приступим к проектированию диалогового окна.

  • Выполните команду Window/Close All Documents, чтобы закрыть все окна редактируемых файлов проекта в рабочей области оболочки. При необходимости сохраните изменения
  • Выполните команду Project/Add Windows Form, чтобы создать форму диалогового окна с именем MyModalDialogBox

Максим Филатов
Максим Филатов

Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет:

Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.

 

Как активировать код?