C# 窗體程序加載,事件觸發順序

        很多人可能在前期開發窗體運用程序時,對窗體事件執行順序都存在一些不明確的認識。在此,我個人總結一下自己的經驗認識,如若存在誤解的,歡迎指出討論。

        通常,我們觀察窗體加載時,我們也可以看出一些規律。比如一個窗體內容很多的窗體,我們會看到,窗體的邊框會最先出現,但是裏面的內容還在加載,如果說對控件有綁定值的操作,那種效果就會更加明顯。這時,我們可能就會有先讓窗體加載出來,在讓他在慢慢的加載一些隱藏數據。。。

        帶着一些疑問,我們一起來看一下接下來要說的內容吧。

        

        對於一個窗體程序,第一步,我們都知道,一定是執行Form()構造函數,初始化窗體,控件等內容,待內容初始完備後,將窗體Show()出來。

        這裏需要注意的是,我們可以用Show()和ShowDialog()兩個方法可以用,通常情況下,我們一般都用Show()這個方法。其實要用哪一個方法,還是需要結合我們具體的需求,而Show()與ShowDialog()的主要區別在於,後一個展示的窗體是獨佔的,如果打開了對應的窗體,不將其關掉,它便會獨佔主線程,使得不能在對系統的其他功能做操作,而前一個便不會有這樣的影響。

       或許這時有人會以爲 Show()方法執行之後,接下來應該是執行Shown()方法。這裏注意了,在Show()方法之後,主線程是會繼續執行Load()事件,通常我們對窗體的初始化賦值,一般都是寫在這個事件裏面,但是也有人會寫在構造函數裏。不過個人建議一下,對應一些控件層級的操作(給一個控件添加一個默認控件)等操作,可以寫在構造函數裏,其他的變量賦值等之類的操作,儘量都寫在Load()事件裏吧。

        Load()事件完成後,接下來便是執行Shown()方法,不過在窗體程序的編寫中,很少用到這一個方法,可做一個瞭解,說不定哪天遇到某個需求,就需要用到這個方法纔能有效的解決。值得注意的是,SizeChange()事件與它基本是屬於同級的。所以出發Shown()與觸發SizeChange()事件都是在Load()事件之後。

        而在窗體加載至完成,還有一個非常重要的一個事件,Activated()事件,他是在窗體激活時或產生操作(包括鼠標點擊)時發生。在窗體主線程執行完成會觸發此事件,所以,在這裏面的操作,是不會對窗體的加載造成影響的,所以加快窗體的加載速度,可以在這個事件上面動文章。不過如果想不到這個的事件,想要不影響窗體加載,提高窗體加載速度,可以利用線程等來實現。其原理都是讓主線程快速執行完成,這樣窗體就不會停留在假死的狀態呢。

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章