摘要:Windows Form 中事件(Event)的順序
開發表單程式時,對事件順序的認知其實蠻重要的,亞當斯以前開發Winform專案時有時候為了控制某些邏輯的先後順序,傷透了腦筋,因為都必須要控管出現的順序或是運作方式等,不過透過Winform event的搭配控管就可以節省不少需要自己去控管的部分了。
微軟MSND中也提到:對於需要輪流處理 Windows Form 應用程式中每個事件的開發人員來說,事件的引發順序就十分重要。當某個狀況呼叫嚴密的事件處理,如重新繪製表單的部分時,有必要瞭解事件在執行階段時的明確引發順序。以下列出亞當斯整理MSDN後的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