Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для КР по ООП.doc
Скачиваний:
8
Добавлен:
18.04.2019
Размер:
2.47 Mб
Скачать

Форма: управление и события жизненного цикла

Управление жизненным циклом и отображением форм осуществляется следующими методами:

Form.Show(),

Form.ShowDialog(),

Form.Activate(),

Form.Hide(),

Form.Close().

Имеет смысл рассмотреть события, связанные с созданием, функционированием и уничтожением формы. К их числу относятся:

  • Load. Генерируется ОДИН РАЗ, непосредственно после первого вызова метода Form.Show() или Form.ShowDialog(). Это событие можно использовать для первоначальной инициализации переменных и для подготовки формы к работе. Сколько в приложении форм, столько раз будет генерироваться это событие. Назначение максимальных и минимальных размеров формы – для этого более подходящего места, нежели обработчик события OnLoad не найти!

  • Activated. Многократно генерируется в течение жизни формы. Когда Windows активизирует форму. Связано с получением и потерей фокуса. Все необходимые мероприятия выполняются здесь. Методы Form.Show(), Form.ShowDialog(), Form.Activate() (передача фокуса, реализованная программно!) способствуют этому. Передача фокуса элементу управления (кнопка – это тоже окно) сопровождается автоматическим изменением цвета элемента управления.

  • VisibleChanged. Генерируется всякий раз при изменении свойства Visible формы. Когда она становится видимой или невидимой. Событию способствуют методы Form.Show(), Form.ShowDialog(), Form.Hide(), Form.Close().

  • Deactivated. Возникает при потере фокуса формой в результате взаимодействия с пользовательским интерфейсом либо в результате вызова методов Form.Hide() или Form.Cloze() – но только для активной формы. Если закрывать неактивную форму, событие не произойдёт! Сказано, что Activated и Deactivated возбуждаются только при перемещении фокуса в пределах приложения. При переключении с одного приложения на другое эти события не генерируются.

  • Closing. Непосредственно перед закрытием формы. В этот момент процесс закрытия формы может быть приостановлен и вообще отменён, чему способствует размещаемый в теле обработчика события следующий программный код: e.Cancel = true; // e - событие типа CancelEventArgs.

  • Closed. Уже после закрытия формы. Назад пути нет. В обработчике этого события размещается любой код для “очистки” после закрытия формы.

Форма: контейнер как элемент управления

Container controls – место для группировки элементов пользовательского интерфейса. И это не простая группировка! Контейнер может управлять доступом к размещаемым не его поверхности элементам управления. Это обеспечивается за счёт свойства Enable, которое будучи установленным в false, закрывает доступ к размещаемым в контейнере компонентам. “Поверхность” контейнера у некоторых его разновидностей не ограничивается непосредственно видимой областью. Могут быть полосы прокрутки.

Каждый контейнер поддерживает набор элементов, который состоит из всех вложенных в него элементов управления. У контейнера имеются свойства Count, которое возвращает количество элементов управления, свойство [ИНДЕКСАТОР], методы Add и Remove.

К числу контейнеров относятся:

  • Form… Без комментариев!

  • Panel. Элемент управления, содержащий другие элеменгты управления. You can use a Panel to для группировки множества элементов управления, как например, группа of RadioButton controls. The Panel control is displayed по умолчанию БЕЗ всяческих рамок. Нет у ПАНЕЛИ и заголовка. Рамки можно заказать. You can provide a standard or three-dimensional border using the BorderStyle property to distinguish the area of the panel from other areas on the form. Panel является производным классом от the ScrollableControl class, а это значит, что можно заказать и полосы прокрутки, путём изменения значения соответствующего свойства. И всё, что располагается на панели за пределами видимости, при условии установки свойства AutoScroll в true, any controls located within the Panel (but outside of its visible region), can be scrolled to with the scroll bars provided.

  • GroupBox. Предполагается для размещения радиокнопок и прочих переключателей. Рисует рамочку вокруг элементов управления, которые группируются по какому-либо признаку. В отличие от панели имеет заголовок, который, впрочем, можно не использовать. Не имеет полос прокрутки.

  • TabControl. Содержит tab pages, которые представлены TabPage объектами, которые могут добавляться через свойство Controls. Каждая TabPage-страница подобна листку записной книжки: страница с закладкой. И в зависимости от того, подцеплены ли tab pages к объекту-представителю класса TabControl, будут генерироваться следующие события: Control.Click, Control.DoubleClick, Control.MouseDown, Control.MouseUp, Control.MouseHover, Control.MouseEnter, Control.MouseLeave and Control.MouseMove. If there is at least one TabPage in the collection, and the user interacts with the tab control’s header (where the TabPage names appear), the TabControl raises the appropriate event. However, if the user interaction is within the ClientRectangle of the tab page, the TabPage raises the appropriate event. От взаимодействия со страницей генерируются одни события, от взаимодействия с корешком – другие.