Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР9.doc
Скачиваний:
24
Добавлен:
21.09.2019
Размер:
4.54 Mб
Скачать

Предварительные замечания о формах.

Класс Form наследует от длинной цепочки своих предков множество элементов, определяющих вид и поведение окон различного типа. Генеалогическое древо класса Form выглядит так: Object®MarshalByRefObject®Component®Control®ScrollableControl®ContainerControl.

Окна приложения могут иметь различный вид и назначение. Все окна можно разделить на модальные и немодальные. Модальное окно не позволяет пользователю переключаться на другие окна того же приложения, пока не будет завершена работа с текущим окном. Как уже отмечалось, в виде модальных обычно оформляют диалоговые окна, требующие от пользователя ввода какой-либо информации. Модальное окно можно закрыть щелчком на кнопке наподобие OK, подтверждающей введенную информацию, на кнопке закрытия окна или на кнопке вроде Cancel, отменяющей ввод пользователя. Примером модального окна может служить окно сообщений MessageBox, упоминавшееся в разделе «Шаблон Windows-приложения».

Немодальное окно позволяет переключаться на другие окна того же приложения. Немодальные окна являются, как правило, информационными. Они используются в тех случаях, когда пользователю желательно предоставить свободу выбора — оставлять на экране какую-либо информацию или нет.

Каждое приложение содержит одно главное окно. Класс главного окна приложения содержит точку входа в приложение (статический метод Main). При закрытии главного окна приложение завершается.

В случае использования многодокументного интерфейса (Multiple Document Interface, MDI) одно родительское окно может содержать другие окна, называемые дочерними. При закрытии родительского окна дочерние окна закрываются автоматически. Вид окна определяет его функциональность, например, окно с одинарной рамкой не может изменять свои размеры.

Рассмотрим наиболее интересных предков класса формы. Их элементы наследуются не только формой, но и другими компонентами, такими, как поля ввода или кнопки.

Класс MarshalByRefObject наделяет своих потомков некой особенностью, благодаря которой обращение к ним выполняется по ссылке, то есть локальная копия объекта не создается.

Класс Component обеспечивает потомков способностью взаимодействовать с контейнером, в котором они расположены. Кроме того, в нем определен метод Dispose, который автоматически вызывается, когда экземпляр класса более не используется. Поэтому для освобождения ресурсов, связанных с приложением, обычно переопределяют этот метод.

Класс Control, являющийся предком всех интерфейсных элементов, рассмотрен в этой главе ранее. В классе ScrollableControl определены элементы, позволяющие компоненту иметь горизонтальную и вертикальную полосы прокрутки. Свойства AutoScroll и AutoScrollMinSize обеспечивают автоматическое появление полос прокрутки в тех случаях, когда выводимая информация не помещается в компоненте.

Класс ContainerControl обеспечивает своих потомков возможностью управлять размещенными внутри них дочерними компонентами. Например, на форме обычно располагаются несколько кнопок, меток и т. п., а на панели — несколько флажков или переключателей. Свойства и методы класса позволяют установить фокус ввода на элемент или получать информацию о том, какой элемент имеет фокус ввода, а также управлять порядком получения фокуса с помощью свойств TabStop и TabIndex.