標籤:
事件引發的順序對某些Windows 表單應用來說十分重要。當某些事件需要特別處理時(如重繪表單的某些部分),必須知道事件在運行時的確切引發順序。下面就應用程式和控制項的生命週期中的幾個重要階段的事件順序進行詳細討論。
應用程式的啟動和關閉
Form和Control類有一組和程式啟動和關閉先關的事件。當Windows Forms程式啟動時,主表單的啟動事件按以下順序引發:
- Control.HandleCreated
為控制項建立控制代碼時發生,在首次顯示Control時會建立控制代碼。例如,如果建立的Control但其Visible屬性設定為false,則HandleCreated不會引發,直到Visiable 設定為true才引發。
- Control.BindingContextChanged
BindingContext屬性值改變時引發.
- Form.Load
Form首次顯示時引發,可以通過該事件分配表單使用的資源等任務。
- Control.VisibleChanged
Visible屬性改變時引發。
- Form.Activated
當表單啟用時引發,當應用程式處於活動狀態並且有多個Form,則活動的表單時具有輸入焦點的表單。不可見的表單不能成為活動表單。啟用form最簡單的方法時單擊它。
在運行時啟用Form,使用Activate方法。可以使用此事件處理一些任務,如根據form在未啟用時對表單資料所做的更改來更新表單內容。
- Form.Shown
form首次顯示時引發,而在隨後的最小化、最大化、還原、隱藏或無效化和重新繪製都不會引發該事件
當Windows Forms程式關閉時,主表單的關閉事件按以下順序引發:
- Form.Closing
- Form.FormClosing
- Form.Cloed
- Form.FormClosed
- Form.Deactivate
Application類的ApplicationExit事件在主表單關閉事件之後引發。
聚焦和驗證事件
當通過使用鍵盤(TAB,Shift+Tab等)、調用Select或SelectNextControl方法、或將ActiveControl屬性設定為當前表單等方法更改焦點時,Control類的聚焦事件按以下順序發生:
- Enter
- GotFocus
- Leave
- Validating
- Validated
- LostFocus
當使用滑鼠或通過調用Focus方法更改焦點時,Control類的聚焦事件發生順序為:
- Enter
- GotFocus
- Leave
- Validting
- Validated
C# Windows Forms 事件處理順序