C# Formアプリケーション関連のイベント発生順

↓を見ればわかります…最初に知りたかったよ~(´・ω・`)

Windowsフォームのイベントの順序
https://msdn.microsoft.com/ja-jp/library/86faxx0d(v=vs.110).aspx
Windowsフォームにおけるマウスイベント
https://msdn.microsoft.com/ja-jp/library/ms171542(v=vs.110).aspx

 

Windowsフォームアプリケーションが起動したとき

メインフォームのスタートアップイベントが次の順序で発生します。

Control.HandleCreated
Control.BindingContextChanged
Form.Load
Control.VisibleChanged
Form.Activated
Form.Shown

 

Windowsフォームアプリケーションを閉じたとき

メインフォームのシャットダウンイベントが次の順序で発生します。

Form.Closing
Form.FormClosing
Form.Closed
Form.FormClosed
Form.Deactivate

 

フォーカスイベントと検証イベント

一般に、
フォーカスを得たとき → Enterイベント(GotFocusイベントは使わない)
フォーカスが外れたとき → Leaveイベント(LostFocusイベントは使わない)
昔はGotFocus・LostFocusを使っていたそうですが、今はEnter・Leaveを使います。

◼︎パターン1

以下の方法でフォーカスを変更したとき

・キーボード (Tab、Shift + Tab など) を使用する
・Select メソッドを呼び出す
・SelectNextControl メソッドを呼び出す
・ActiveControl プロパティを現在のフォームに設定する

次の順序で Control クラスのフォーカス イベントが発生します。

Enter
GotFocus
Leave
Validating
Validated
LostFocus


◼︎パターン2

以下の方法でフォーカスを変更したとき

・マウスの使用
・Focus メソッドの呼び出し

次の順序で Control クラスのフォーカス イベントが発生します。

Enter
GotFocus
LostFocus
Leave
Validating
Validated

 

マウスイベント

次の順序で発生します。

MouseEnter
MouseMove
MouseHover / MouseDown / MouseWheel
MouseUp
MouseLeave

 

マウスボタンのシングルクリックイベント

Windowsフォームのコントロールで、
Button、CheckBox、ComboBox、RadioButton以外は、
次の順序でクリックイベントが発生します。左右ボタンのどちらにも以下の順序で発生します。

MouseDown
Click
MouseClick
MouseUp

 

マウスボタンのダブルクリックイベント

Windowsフォームのコントロールでは、次の順序でイベントが発生します。
(Button、CheckBox、ComboBox、RadioButton以外)

MouseDown
Click
MouseClick
MouseUp
MouseDown
DoubleClick
MouseDoubleClick
MouseUp

 

DoubleClickイベントについて
コントロールのStandardDoubleClickスタイルビットがtrueに設定されているかどうかによって異なる場合があります。

 

グレープシティのイベント

FlexGrid for WinFormsにはBeforeMouseDownイベント(MouseDownイベントを処理する前に発生)などいろいろな便利イベントが準備されています。