Российский Государственный Технологический Университет им. К.Э. Циолковского
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 5636 / 790 | Оценка: 3.96 / 3.45 | Длительность: 27:04:00
ISBN: 978-5-9556-0086-4
Лекция 16:

Форма

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

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

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.Close() – но только для активной формы. Если закрывать неактивную форму, событие не произойдет! Сказано, что Activated и Deactivated возбуждаются только при перемещении фокуса в пределах приложения. При переключении с одного приложения на другое эти события не генерируются.
  • Closing. Непосредственно перед закрытием формы. В этот момент процесс закрытия формы может быть приостановлен и вообще отменен, чему способствует размещаемый в теле обработчика события следующий программный код: e.Cancel = true; // e – событие типа CancelEventArgs.
  • Closed. Уже после закрытия формы. Назад пути нет. В обработчике этого события размещается любой код для "очистки" (освобождения ресурсов) после закрытия формы.

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

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

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

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

  • Form... Без комментариев!
  • Panel. Элемент управления, содержащий другие элементы управления. Может быть использован для группировки множества элементов управления, как, например, группа для множества RadioButton. По умолчанию внешний вид панели НЕ ИМЕЕТ рамок. Нет у ПАНЕЛИ и заголовка. Рамки можно заказать. Для этого в классе панели используется свойство BorderStyle. ПАНЕЛЬ является производным классом от ScrollableControl, а это значит, что можно заказать для нее собственные полосы прокрутки путем изменения значения соответствующего свойства.
  • GroupBox. Предполагается для размещения радиокнопок и прочих переключателей. Рисует рамочку вокруг элементов управления, которые группируются по какому-либо признаку. В отличие от панели, имеет заголовок, который, впрочем, можно не использовать. Не имеет полос прокрутки.
  • TabControl. Содержит tab pages, они представлены TabPage -объектами, которые могут добавляться через свойство Controls. Каждая TabPage -страница подобна листку записной книжки: страница с закладкой. В зависимости от того, подцеплены ли tab pages к объекту – представителю класса TabControl, будут генерироваться следующие события: Control.Click, Control.DoubleClick, Control.MouseDown, Control.MouseUp, Control.MouseHover, Control.MouseEnter, Control. MouseLeave и Control.MouseMove. Следует иметь в виду, что при взаимодействии пользователя со страницей генерируются одни события, при взаимодействии с "корешком" элемента управления – другие.

Разница между элементами управления и компонентами

Элемент управления имеет видимое представление и непосредственно используется в процессе управления формой. Компоненты (таймер, провайдеры дополнительных свойств) видимого представления не имеют и поэтому в управлении формой участвуют опосредованно.

Свойства элементов управления. Anchor и Dock

Это средства, которые обеспечивают стыковку и фиксацию элементов управления в условиях изменяемых размеров контейнера.

Anchor позволяет автоматически выдерживать постоянное расстояние между границами элемента управления, для которого оно определено, и границами контейнера. И это обеспечивается за счет автоматического изменения размеров "зацепленного" элемента управления вслед за изменениями размеров контейнера. Таким образом обеспечивается реакция элемента управления на изменения контейнера.

Dock – стыковка, прикрепление элемента управления к границе контейнера. Dock – свойство элемента управления, а не контейнера. Центральный прямоугольник приводит к тому, что элемент управления заполнит всю поверхность контейнера.

kewezok kewezok
kewezok kewezok
Елена Шляхт
Елена Шляхт
Объясните плиз в чем отличие а++ от ++а
Почему результат разный?
int a=0, b=0;
Console.WriteLine(a++); //0
Console.WriteLine(++b); //1
a++;
++b;
Console.WriteLine(a); //2
Console.WriteLine(b); //2