В чем разница между формой Form.Load, Form.Shown и Form.Activated события? Каков порядок их увольнения?
Порядок событий "Form.Load", "Form.Shown" и "Form.Activated" в Windows Forms
Ответ 1
Смотрите Жизненный цикл событий Windows Forms:
- Переместить: это событие происходит, когда форма перемещается. Хотя по умолчанию, когда создается и запускается форма, пользователь не перемещает ее, но это событие запускается до возникновения события загрузки.
- Загрузка: это событие происходит до того, как форма отображается в первый раз.
- VisibleChanged: Это событие происходит, когда изменяется значение свойства Visible.
- Активировано: это событие происходит, когда форма активируется в коде или пользователем.
- Отображается: Это событие происходит всякий раз, когда форма сначала отображается.
- Краска: это событие происходит, когда элемент управления перерисовывается.
- Деактивировать: Это событие происходит, когда форма теряет фокус и не является активной формой.
- Закрытие: это событие происходит, когда форма закрывается.
- Закрыто: это событие происходит, когда форма закрывается.
Ответ 2
-
Событие
Load
запускается, когда форма была инициализирована после создания дескриптора, но до его отображения. -
Событие
Shown
срабатывает после первого появления формы, когда вы вызываетеform.Show()
(илиform.Visible = true
).
Если вы скроете свою форму, затем снова покажите ее,Shown
снова запустится. (НоLoad
не будет) -
Событие
Activate
срабатывает, когда пользователь переключается на вашу форму.
Если пользователь переключится на другую программу (или форму), затем переключится на вашу форму,Activate
снова запустится.
Ответ 3
Кроме того, событие Form.Activate
может быть запущено несколько раз. Например, если вы откроете окно сообщения из своей формы, и когда вы нажмете на кнопку сообщения любую кнопку и вернитесь к форме, Form.Activate
будет запущен. То же самое верно для любого другого диалогового окна, такого как FileOpenDialog
.
Ответ 4
В классах 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
Когда вы меняете фокус с помощью мыши или вызываете метод Фокус, события фокуса класса Control выполняются в следующем порядке:
Enter
GotFocus
LostFocus
Leave
Validating
Validated
Ответ 5
Порядок будет Form.Load
, который инициализирует форму и вызывает элементы управления, Form.Shown
, который отмечает кадр как видимый (даже в C++, это делается после создания формы) и Form.Activated
, что дает фокус форума.