• Программинг

Нужны источники бесперебойного питания?

Источники бесперебойного питания от дизельстор

Порядок возникновения событий на формах

Каждый, кто пишет программы на C# с использованием форм, обязан знать, какие события происходят в момент создания и уничтожения формы. Здесь я приведу краткий список тех событий, в хронологическом порядке, которые возникают когда форма открывается, закрывается, становится видимой или переходит в состояние невидимости.

Открытие формы

СобытиеВиднаIsDisposed
Вызов метода form.Show()

Нет

Нет

Control.HandleCreated

Нет

Нет

Control.BindingContextChanged

Да

Нет

Form.Load

Да

Нет

Control.VisibleChanged

Да

Нет

Control.GotFocus

Да

Нет

Form.Activated

Да

Нет

Form.Shown

Да

Нет

Как видите, форма появляется на экране уже вместе с событием Control.BindingContextChanged

Закрытие формы

При закрытии формы происходит следующий порядок

СобытиеВиднаIsDisposed
Вызов метода form.Close()

Да

Нет

Form.Closing

Да

Нет

Form.FormClosing

Да

Нет

Form.Closed

Да

Нет

Form.FormClosed

Да

Нет

Form.Deactivate

Да

Нет

Control.LostFocus

Да

Нет

Control.HandleDestroyed

Да

Нет

Component.Disposed

Нет

Нет

После события Disposed

Нет

Да

Форма видна до выполнения события Disposed. Во время закрытия формы вы все еще можете прервать ее закрытие. События Closing и Closed не возникают, когда выполняется метод Application.Exit. События Deactivate и LostFocus возникают только, если форма имела фокус. И запомните, что только после события Disposed форма помечается как IsDisposed.

Скрытие формы

Во время скрытия формы происходят следующие события.

СобытиеВидна
Установка form.Visible = false

Да

Form.Deactivate

Да

Control.LostFocus

Да

Control.VisibleChanged

Нет

События Deactivate и LostFocus происходят, только если форма имела фокус. Иначе, они не возникают.

Показ формы

Когда форма из невидимого состояния переходит в видимое.

СобытиеВидна
Установка form.Visible = true

Нет

Control.VisibleChanged

Да

Control.GotFocus

Да

Form.Activated

Да