* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
События жизненного цикла формы
7 февраля 2009
На протяжении жизненного цикла формы генерируется ряд событий. В этом разде- ле мы рассмотрим те события, которые генерируются во время создания, функцио- нирования и уничтожения формы:
• Load • Activated • Visible Changed • Deactivated • Closing • Closed Хотя этот список далеко не полон, все события, которые чаще всего генериру- ются на протяжении жизненного цикла формы, в нем указаны. Событие Load Это событие генерируется, когда экземпляр формы впервые загружается в програм- му, то есть при первом вызове метода Form.Show или Form. Show Dialog для экземпля- ра формы. Рассмотрим пример: Visual Basic .NET Dim rnyForm as New Form{) myForm.ShowO ' Здесь срабатывает событие Load myForm.HideO ' Форма стала невидимой myForm. ShowO ' Событие Load больше не срабатывает myForm.CloseO ' Эта команда закрывает и удаляет форму... myForm.ShowO ' ...а эта - генерирует исключение, поскольку объект myForm уже недоступен Visual C# Form myForm = new Form(); myForm.ShowO; // Здесь срабатывает событие Load myForm.HideO; // Форма стала невидимой myForm.ShowO; // Событие Load больше не срабатывает myForm.CloseO; // Эта команда закрывает и удаляет форму... myForm.ShowO; // ...а эта - генерирует исключение, поскольку // объект myForrn уже недоступен Этот пример демонстрирует обстоятельства генерации события Load. Заметьте, что такое событие генерируется в жизненном цикле отдельной формы единствен- ный раз. Если существует несколько экземпляров некоторой формы, то событие Load создается для каждого из них. Обычно в обработчике события Load инициали- зируют переменные формы и подготавливают форму к работе.
События Activated и Deactivated Событие Activated многократно срабатывает в течение жизни формы. Оно генери- руется, когда форма получает фокус. Так, это происходит при вызове методов Form.Show, Form. Show Dialog и Form. Activate, а также при активации формы. Обра- ботчик события Activated применяют для автоматической передачи фокуса опреде- ленному элементу управления формы, а также для изменения цвета активного эле- мента управления, чтобы сделать его заметным пользователю. Напротив, событие Deactivate генерируется, когда форма теряет фокус. Это про- исходит из-за взаимодействия пользователя с интерфейсом либо при вызове мето- дов Form.Hide или Form.Close(однако метод Form.Close генерирует это событие, толь- ко если закрываемая форма является активной). Это событие применяют для про- верки данных, введенных пользователем. События Activated и Deactivated генерируются только при перемещении фокуса в пределах приложения: если переключиться на другое приложение и обратно, ни одно из них не сработает. Событие VisibleChangedl Как следует из имени этого события, оно генерируется при изменении свойства Visible формы, то есть всякий раз, когда форма становится видимой или невиди- мой. Это событие генерируют методы Form.Show, Form. Show Dialog, Form.Hide, и Form.Close. Событие Closing Это событие генерируется, когда текущая форма начинает закрываться (но еще не закрыта), например при вызове метода Form.Close или щелчке кнопки Close. Это событие позволяет проверить, все ли действия, обязательные для данной формы, выполнены, например, заполнены ли все обязательные поля. В зависимости от ре- зультатов проверки, можно прервать процесс закрытия и оставить форму откры- той. Для этого к обработчику этого события добавляют следующий код: Visual Basic .NET CancelEventArgs.Cancel = True Visual C# CaricelEventArgs. Cancel = true: Событие Closed Это событие генерируется после закрытия формы. Подобно событию Closing, это происходит при вызове метода Form.Close или когда пользователь закрывает форму вручную. Событие Closed генерируется вслед за событием Closing после исполнения его обработчиков. Событие Closed позволяет исполнить любой код для очистки пос- ле закрытия формы. Резюме • Форма — это главный элемент интерфейса программ Windows Forms. Ее следует конструировать так, чтобы пользовательский интерфейс получился полным, гар- моничным и привлекательным. Формы разрешается добавлять как во время раз- работки, так и выполнения. Наследование позволяет создавать формы со сход- ным оформлением и набором элементов управления, для этого применяют гра- фический интерфейс среды разработки. • У форм есть свойства, управляющие их внешним видом. Изменяя их, вы меня- ете внешний вид формы и (как правило) размещенных на ней элементов управ- ления. Вот некоторые из этих свойств: • BackColor т Fore Color т Text т Font т Cursor т Back Ground Image т Opacity • Для управления жизненным циклом и отображением форм предназначены сле- дующие методы: • Form.Show т Form. Show Dialog • Form.Activate т Form. Hide • Form. Close • Все перечисленные методы так или иначе изменяют состояние интерфейса и ге- нерируют различные события: • Load т Activated • VisibleChanged т Deactivated т Closing т Closed • Можно создавать специальные методы, называемые обработчиками событий. Эти методы выполняются при генерации соответствующих событий. Обработ- чик события вызывается каждый раз, когда генерируется обрабатываемое им событие.