Порядок событий «Form.Load», «Form.Shown» и «Form.Activation» в Windows Forms - PullRequest
48 голосов
/ 18 июня 2010

В чем разница между Form.Load , Form.Shown и Form.Activation событиями? В каком порядке они увольняются?

Ответы [ 5 ]

68 голосов
/ 18 июня 2010

См. Жизненный цикл событий Windows Forms :

  • Move: это событие происходит при перемещении формы. Хотя по умолчанию, когда форма создается и запускается, пользователь не перемещает ее, но это событие срабатывает до наступления события Load.
  • Загрузка: это событие происходит до того, как форма отображается в первый раз.
  • VisibleChanged: это событие происходит при изменении значения свойства Visible.
  • Активировано: это событие происходит, когда форма активируется в коде или пользователем.
  • Показано: это событие происходит при первом отображении формы.
  • Paint: это событие возникает при перерисовке элемента управления.
  • Деактивировать: это событие происходит, когда форма теряет фокус и не является активной формой.
  • Закрытие: это событие происходит при закрытии формы.
  • Closed: это событие происходит, когда форма закрывается.
22 голосов
/ 18 июня 2010
  • Событие Load возникает, когда форма была инициализирована, после того, как был создан ее дескриптор, но до его отображения.

  • Событие Shown возникает после того, как форма становится видимой в первый раз, когда вы вызываете form.Show() (или form.Visible = true).
    Если вы скроете свою форму, а затем покажете ее снова, Shown снова сработает. (Но Load не будет)

  • Событие Activate возникает, когда пользователь переключается на вашу форму.
    Если пользователь переключается на другую программу (или форму), а затем снова переключается на вашу форму, Activate снова запускается.

13 голосов
/ 30 июня 2010

Более того, событие Form.Activate может быть запущено несколько раз.Например, если вы откроете окно сообщения в своей форме, и когда вы нажмете любую кнопку в окне сообщения и вернетесь обратно в форму, Form.Activate будет запущено.То же самое верно для любого другого диалогового окна, такого как FileOpenDialog.

7 голосов
/ 07 апреля 2016

Классы 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
3 голосов
/ 18 июня 2010

Порядок будет Form.Load, который инициализирует форму и вызывает элементы управления, Form.Shown, который отмечает кадр как видимый (даже в C ++ , это делается после создания формы) и Form.Activated, что придает форуму фокус.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...