日期:2014-05-18 浏览次数:20895 次
private bool isLoading = false; private void Form1_Load(object sender, EventArgs e) { isLoading = true; //初始化画面操作 } private void Form1_Activated(object sender, EventArgs e) { if (isLoading) { isLoading = false; this.Activate(); //连接数据库等数据操作 //动态生成的东西。..和调用其它类... } }
------解决方案--------------------
引用http://www.dotblogs.com.tw/adams/archive/2008/05/19/4066.aspx
MSDN的地址忘了
開發表單程式時,對事件順序的認知其實蠻重要的,亞當斯以前開發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