日期:2014-05-18  浏览次数:20857 次

窗体SHOW之前的方法有没有?
现在窗体SHOW的时候。..LOAD里的事件很多动态生成的东西。..和调用其它类...
所以窗体一出来闪烁.....速度也比较慢... 有没办法在SHOW的时候直接看到完成的窗体...谢谢。.

------解决方案--------------------
Load完成之后才会SHOW的。你是不是有什么地方还写了绘图的?
------解决方案--------------------
将public Load() show 之前load()
------解决方案--------------------
探讨
将publicLoad() show 之前load()

------解决方案--------------------
在调用Show()之前先调用一个自己写的方法来处理事情。
------解决方案--------------------
动态创建的东西,建议放到窗体的构造器里面最后的部分构造,这样Load部分可以写的简单一点。
------解决方案--------------------
使用Activated应该会好一些,楼主试一下
C# code

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