Порядок событий "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, что придает форуму фокус.

Другие вопросы по тегам