Порядок событий "Form.Load", "Form.Shown" и "Form.Activation" в Windows Forms
В чем разница между событиями Form.Load, Form.Shown и Form.Activation? В каком порядке они увольняются?
5 ответов
Смотрите жизненный цикл событий Windows Forms:
- Переместить: это событие происходит при перемещении формы. Хотя по умолчанию, когда форма создается и запускается, пользователь не перемещает ее, но это событие срабатывает до наступления события Load.
- Загрузка: это событие происходит до того, как форма отображается в первый раз.
- VisibleChanged: это событие происходит при изменении значения свойства Visible.
- Активировано: это событие происходит, когда форма активируется в коде или пользователем.
- Показано: это событие происходит при первом отображении формы.
- Paint: это событие возникает при перерисовке элемента управления.
- Деактивировать: это событие происходит, когда форма теряет фокус и не является активной формой.
- Закрытие: это событие происходит, когда форма закрывается.
- Закрыто: это событие происходит, когда форма закрывается.
Load
Событие запускается, когда форма была инициализирована, после того, как ее дескриптор был создан, но до того, как она была показана.Shown
событие запускается после того, как в первый раз форма становится видимой, когда вы звонитеform.Show()
(или жеform.Visible = true
).
Если вы прячете свою форму, то покажите ее снова,Shown
будет стрелять снова. (НоLoad
не будет)Activate
событие срабатывает, когда пользователь переключается на вашу форму.
Если пользователь переключается на другую программу (или форму), а затем переключается обратно на вашу форму,Activate
будет стрелять снова.
Более того, Form.Activate
событие может быть запущено несколько раз. Например, если вы откроете окно сообщения из своей формы, и когда вы нажмете любую кнопку в окне сообщения, и вернетесь обратно в форму, Form.Activate
уволен. То же самое верно для любого другого диалогового окна, такого как FileOpenDialog
,
Классы Form и Control предоставляют набор событий, связанных с запуском и закрытием приложения. Когда запускается приложение Windows Forms, события запуска основной формы генерируются в следующем порядке:
Control.HandleCreated
Control.BindingContextChanged
Form.Load
Control.VisibleChanged
Form.Activated
Form.Shown
Когда приложение закрывается, события завершения работы главной формы генерируются в следующем порядке:
Form.Closing
Form.FormClosing
Form.Closed
Form.FormClosed
Form.Deactivate
Фокус и валидационные мероприятия
При изменении фокуса с помощью клавиатуры (TAB, SHIFT+TAB и т. Д.), Путем вызова методов Select или SelectNextControl или путем задания для свойства ActiveControl текущей формы события фокуса класса Control происходят в следующих случаях. порядок:
Enter
GotFocus
Leave
Validating
Validated
LostFocus
При изменении фокуса с помощью мыши или вызова метода Focus события фокуса класса Control происходят в следующем порядке:
Enter
GotFocus
LostFocus
Leave
Validating
Validated
Заказ будет Form.Load
, который инициализирует форму и вызывает элементы управления, Form.Shown
, который отмечает кадр как видимый (даже в C++ это делается после создания формы), и Form.Activated
, что придает форуму фокус.