00. はじめに
Windows Formのイベント実行順序は以下に記載されています。
Windows フォームのイベントの順序
が、AndroidのLifecycleのように図にして一目で分かるようにされていません。
ですので、確認がてら図を起こしていきます。
01. 環境
確認に使用した環境です。
バージョン | |
---|---|
Windows 10 Pro | 1709 |
Visual Studio Community 2017 | 15.6.5 |
.NET Framework | 4.6.1 |
02. 図
図のwsd
PlantUMLはVersion 1.2018.3を使用
@startuml
title Windows.Formsのイベント順序
start
->アプリ起動;
:Control.HandleCreated;
note left
コントロールに対してハンドルが作成されると発生します。
end note
:Control.BindingContextChanged;
note left
BindingContext プロパティの値が
変更された場合に発生します。
end note
:Form.Load;
note left
フォームが初めて表示される直前に発生します。
end note
:Control.VisibleChanged;
note left
Visible プロパティの値が
変更された場合に発生します。
end note
:★1;
:Form.Activated;
note left
フォームがコード内またはユーザーの操作によって
アクティブになると発生します。
end note
if (初めて表示する) then (Yes)
:Form.Shown;
note left
フォームが初めて表示されるたびに発生します。
end note
else (No)
endif
:イベント関係;
split
->フォーカスを失う;
:Form.Deactivate;
note left
フォームがフォーカスを失い
アクティブでなくなると発生します。
end note
->フォーカスを得る;
:★1へ;
detach
split again
->アプリ終了;
:Form.FormClosing;
note right
フォームが閉じる前に発生します。
end note
:Form.FormClosed;
note right
フォームが閉じた後に発生します。
end note
:Form.Deactivate;
note right
フォーカスを失った際と同じイベント
end note
:Control.HandleDestroyed;
note right
コントロールのハンドルが
破棄されているときに発生します。
end note
stop
end split
partition イベント関係 {
partition マウスイベント {
:MouseEnter;
note left
マウス ポインターによってコントロールが入力されると発生します。
(要はマウスポインタがフォーム外から入ってくると発生)
end note
detach
:MouseMove;
note left
マウス ポインターがコントロール上を移動すると発生します。
end note
detach
:MouseHover;
note left
マウスポインタがコントロール上に重なると発生する
(マウスポインタの動きが止まったら?)
end note
detach
:MouseDown;
note left
マウス ポインターがコントロール上にあり、
マウス ボタンがクリックされると発生します。
end note
:MouseUp;
note left
マウス ポインターがコントロール上にあり、
マウス ボタンが離されると発生します。
end note
detach
}
partition キーイベント {
repeat
->キーを押している間繰り返される;
:PreviewKeyDown;
note left
このコントロールにフォーカスがあるときにキーが押された場合、
KeyDown イベントの前に発生します。
end note
:KeyDown;
note left
コントロールにフォーカスがあるときにキーが押されると発生します。
end note
:KeyPress;
note left
コントロールにフォーカスがあるときに、
文字、 スペース、または Backspace キーが押された場合に発生します。
end note
repeat while()
:KeyUp;
note left
コントロールにフォーカスがあるときにキーが離されると発生します。
end note
}
}
@enduml
98. 参考
Windows フォームのイベントの順序 | https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/order-of-events-in-windows-forms
99. 更新履歴
日付 | 内容 |
---|---|
2018/05/01 | 投稿 |