[C#] Window Form 事件順序

微軟MSND中提到:對於需要輪流處理 Windows Form 應用程式中每個事件的開發人員來說,事件的引發順序就十分重要。
當某個狀況呼叫嚴密的事件處理,如重新繪製表單的部分時,有必要了解事件在執行階段時的明確引發順序。
下面列出Windows Form 中事件的順序,以方便日後上課或是設計專案時參考。

Form 和 Control 有關啟動與關閉的事件順序為可分為兩大類,

當 Windows Form 應用程式啟動時,會以下列順序引發主要表單的啟動事件:
* 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

沒有留言: