Читайте также:
|
|
Событие Activate отчасти напоминает рассматриваемое ниже событие Load. Существует еще пара событий, с которыми его иногда путают, — Initialize и GotFocus. Вы можете подумать, что активизация и инициализация формы — одно и то же, но на самом деле это не так. Форма обычно активизируется после инициализации, и лишь после этого ей передается фокус.
Между этими событиями существуют достаточно тонкие отличия, причем главное из них — порядок, в котором события происходят в приложении. Этот порядок выглядит так:
Initialize. Событие происходит во время конфигурации и до загрузки формы.
Load. Событие происходит после инициализации формы, но до ее отображения на экране. Добавляя код в процедуру события Load, вы можете настроить внешний вид или поведение формы.
Activate. Событие Activate происходит после загрузки формы в память, но до того, как форма станет активной.
GotFocus. Это событие, если оно вообще происходит, возникает при получении фокуса формой - когда форма загружается или когда пользователь обращается к ней, щелкая мышью.
После открытия формы из перечисленных событий могут произойти лишь GotFocus или Activate, хотя в отдельных, очень специфических, случаях может произойти и событие Initialize.
Оно происходит в тот момент, когда Visual Basic впервые узнает о существовании формы. В режиме выполнения это случается сразу же после команды Run > Start. За ним следует событие Load - оно соответствует моменту, когда Visual Basic загружает форму с диска или из дискового кэша в памяти. После загрузки формы и передачи ей фокуса (иначе говоря, при активизации формы) происходит событие Activate. Через считанные миллисекунды после него следует событие GotFocus.
Тем не менее последнее может произойти лишь в том случае, если на форме нет ни одного видимого элемента. Если же на форме присутствует хотя бы один видимый элемент, то фокус получит он, а событие Got Focus формы будет пропущено — вместо него будет вызвано событие Got Focus элемента. Следовательно, в нормальной ситуации при запуске приложения вызывается событие Load первой отображаемой формы, за которым следует Activate. Разумеется, приложение может иметь и другие окна. Когда пользователь или программа снова переключится в первое окно, снова будет вызвано событие Activate, но на этот раз без Load. Впрочем, событие Load все же происходит, если форма была выгружена во время выполнения программы.
Подведем итоги: при запуске приложения происходит событие Load, а за ним следует событие Activate. Когда фокус переходит к другой форме и снова возвращается к первой (и если она не была предварительно выгружена), снова происходит событие Activate, но уже без предварительного события Load.
Дата добавления: 2015-07-20; просмотров: 86 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
События форм | | | Создание MDI-приложения |