Метод Form. ShowDialog выполняет те же действия, что и Form. Show, но делает окно формы модальным. Это означает, что другим формам приложения не удастся получить фокус, пока не закрыта форма, показанная при помощи метода Form. ShowDialog. Сделав окно формы модальным, вы заставите пользователя выполнить некоторое действие на этой форме, и только после этого он сможет продолжить работу с приложением. Например, метод Form. ShowDialog позволяет оповестить пользователя о том, что дискета недоступна. Ниже показан пример кода, демонстрирующий применение методов Form. Show и Form. Show Dialog'.

// Этот пример предполагает наличие класса формы DialogForm

DialogForm myForm = new DialogFormf);

// Отобразить форму а обычном окне

myForm. Show();

// Отобразить форму в модальном окне

myForm. ShowDialog();

Метод Activate

Если форма видима, но у нее нет фокуса, можно передать ей фокус, вызвав метод Fortn. Activate из формы активного приложения. При этом форма активируется и получает фокус ввода.

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

myForm. Activate();

Метод Hide

Чтобы сделать форму невидимой, вызовите метод Form, Hide. Форма остается в памяти, но она невидима, пока не будет вызван метод Form, Show или свойство Visible этой формы не будет установлено в true. Метод Form. Hide устанавливает свойство Visible в false (в принципе, аналогичный эффект достигается при установке этого свойства напрямую).

НЕ нашли? Не то? Что вы ищете?

myForm. Hide();

Метод Close

Чтобы закрыть ненужную форму и удалить ее из памяти, вызовите метод Form. Close.

Этот метод закрывает все удерживаемые формой ресурсы и помечает ее как \tycop, подлежащий сбору. После вызова метода Form. Close сделать форму видимой, вызвав метод Form. Show, не удастся, поскольку ресурсы этой формы уже освобождены. Вызов Form. Close на стартовой форме приложения завершает приложение.

myForm. Close();

Применение событий формы

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

Любые элементы управления и формы генерируют множество разнообразных событий. Например, при вызове метода Form. Hide форма генерирует события Deactivate и Visible Changed. Если разработчик хочет заставить приложение выполнять некоторые действия в ответ на событие, он пишет обработчик события (event handler) — метод, исполняемый при генерации события. Например, в обработчик события Deactivate можно вставить код, проверяющий заполнение обязательных полей формы.

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

Создание обработчика события в проекте Visual C#

1. В режиме Design щелкните форму или элемент управления, для которого хотите создать обработчик события.

2. Щелкните кнопку Events в окне Properties, чтобы отобразить список доступных событий.

3. Дважды щелкните событие, для которого нужно написать обработчик,

Рис. 2-5. Создание обработчика события в проекте Visual C#

В результате в редакторе кода откроется новый шаблон обработчика событий, после чего к обработчику можно добавить собственный код. Он будет выполняться при генерации данного события. Список событий в окне Properties показан на рис. 2-5. Обратите внимание на кнопку Events (на ней изображена молния или искра).

События жизненного цикла формы

На протяжении жизненного цикла формы генерируется ряд событий. В этом разделе мы рассмотрим те события, которые генерируются во время создания, функционирования и уничтожения формы:

Load

• Activated

Visible Changed

• Deactivated

Closing

• Closed

Хотя этот список далеко не полон, все события, которые чаще всего генерируются на протяжении жизненного цикла формы, в нем указаны.

Событие Load

Это событие генерируется, когда экземпляр формы впервые загружается в программу, то есть при первом вызове метода Form. Show или Form. Show Dialog для экземпляра формы. Рассмотрим пример:

Form myForm = new Form();

myForm. Show(); // Здесь срабатывает событие Load

myForm. Hide(); // Форма стала невидимой

myForm. Show(); // Событие Load больше не срабатывает

myForm. Close(); // Эта команда закрывает и удаляет форму...

myForm. Show(); // ...а эта - генерирует исключение, поскольку

// объект myForm уже недоступен

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

События Activated и Deactivated

Событие Activated многократно срабатывает в течение жизни формы. Оно генерируется, когда форма получает фокус. Так, это происходит при вызове методов Form. Show, Form. Show Dialog и Form. Activate, а также при активации формы. Обработчик события Activated применяют для автоматической передачи фокуса определенному элементу управления формы, а также для изменения цвета активного элемента управления, чтобы сделать его заметным пользователю.

Напротив, событие Deactivate генерируется, когда форма теряет фокус. Это происходит из-за взаимодействия пользователя с интерфейсом либо при вызове методов Form. Hide или Form. Close(однако метод Form. Close генерирует это событие, только если закрываемая форма является активной). Это событие применяют для проверки данных, введенных пользователем.

События Activated и Deactivated генерируются только при перемещении фокуса в пределах приложения: если переключиться на другое приложение и обратно, ни одно из них не сработает.

Событие VisibleChanged

Как следует из имени этого события, оно генерируется при изменении свойства Visible формы, то есть всякий раз, когда форма становится видимой или невидимой. Это событие генерируют методы Form. Show, Form. Show Dialog, Form. Hide, и Form. Close.

Событие Closing

Это событие генерируется, когда текущая форма начинает закрываться (но еще не закрыта), например при вызове метода Form. Close или щелчке кнопки Close. Это событие позволяет проверить, все ли действия, обязательные для данной формы, выполнены, например, заполнены ли все обязательные поля. В зависимости от результатов проверки, можно прервать процесс закрытия и оставить форму открытой. Для этого к обработчику этого события добавляют следующий код:

CancelEventArgs. Cancel = true:

Событие Closed

Это событие генерируется после закрытия формы. Подобно событию Closing, это происходит при вызове метода Form. Close или когда пользователь закрывает форму вручную. Событие Closed генерируется вслед за событием Closing после исполнения его обработчиков. Событие Closed позволяет исполнить любой код для очистки после закрытия формы.

1.3. Применение элементов управления и компонентов

Наряду с формами пользовательский интерфейс составляют элементы управления (или, как их еще называют, элементы управления Windows Forms). Это графические инструменты, которые формируют либо дополняют функциональность приложения. Их перетаскивают на форму с инструментальной панели Toolbox. Некоторые из них, например Button и TextBox, служат для получения ввода от пользователя и выполняют базовые задачи по взаимодействию с пользователем. Кроме того, предусмотрены специализированные компоненты, реализующие более сложные операции по взаимодействию с другими частями приложения. Компоненты похожи на элементы управления: это тоже готовые блоки кода, инкапсулирующие определенную функциональность. Основное отличие между ними в том, что элементы управления видимы, а компоненты — нет (по крайней мере в период выполнения). На этом занятии вы узнаете, как применять элементы управления и компоненты при создании пользовательского интерфейса.

Работа с элементами управления

Инструментальная панель Toolbox в Visual Studio содержит множество готовых элементов управления для разработки собственных решений. Большинство реальных функций пользовательского интерфейса реализовано соответствующими элементами управления, размещенными на формах. Возьмем для примера элемент управления, представляющий кнопку (Button). Его размещают на форме и, как правило, снабжают заголовком, поясняющим его назначение. Когда пользователь щелкает кнопку, вызывается обработчик ее события click, исполняющий некоторый код.

Элементы управления Label (надпись) и PictureBox (изображение) предназначены для отображения данных, a TextBox (текстовое поле) и ListBox (список) способны как отображать данные, так и принимать их от пользователя.

Для размещения элементов управления на форме применяют инструмент под названием дизайнер, который отображает графическое представление формы, близкое к ее виду во время выполнения. Графический интерфейс дизайнера позволяет перетаскивать мышью необходимые элементы управления с инструментальной панели на поверхность формы. При размещении элемента управления на форме его код автоматически добавляется к приложению. Для изменения положения элементов управления, размешенных на форме, достаточно перетащить их в нужное место. Кроме того, можно изменять размеры большинства элементов управления, перетаскивая их границы.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8