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

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

Окна приложения могут иметь различные вид и назначение. Все окна можно разделить на модальные и немодальные. Модальное окно не позволяет пользова­телю переключаться на другие окна того же приложения, пока не будет заверше­на работа с текущим окном (особый вид модального окна - системное модальное окно — не позволяет переключать­ся даже на окна других приложений).

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

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

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: