C# WinForm 慎用 override CreateParams 來重載窗體的一些特性


窗體和控件的屬性CreateParams(這真的是一個屬性)很神奇,因為通過它你能夠很方便的控制窗體或控件諸如邊框、最大化最小化關閉按鈕的隱藏、窗體的模式化彈窗模式等的一些特性。雖然,CreateParams有者如此巨大的潛力,但是在使用時要相當慎重,如果你不了解CreateParams這個屬性的話,反而會是你在編寫其他代碼的時候非常疑惑。

引用MSDN中對CreateParams的說明:

    在你開發的重載控件中不要重寫這個屬性,通過這個屬性控制控件的某些風格。只有在你封裝Windows控件或者想實現某些WinForm沒有提供的風格(比如Layered Window)控制的時候再使用這個屬性。更多信息請參照MSDN上對CreateWindow方法和CreateWindowEx方法的參數CREATESTRUCT結構體的文檔注釋 

簡述為何CreateParams能夠實現這樣高級的樣式控制,因為從CreateWindow和CreateWindowEx的名字就可以看出,CreateParam是傳遞給這倆個方法的參數,而這兩個方法又是在窗體創建的時候調用的。所以,CreateParam才能夠實現如此強大的樣式控制。

在net開發winform的過程中,我們有時需要對form窗體做一些特殊的設置,比如:
隱藏主窗體,只顯示右下角的任務欄圖標
上面的“隱藏主窗體”,有多種實現方式,但最為完美和徹底的方法,就是重寫基類窗體的CreateParams事件,來實現。

        protected override CreateParams CreateParams
        {
            get
            {
                base.Visible = false;
                return base.CreateParams;
            }
        }

上面的代碼,就是實現方式,非常簡單有效,調試運行,不會看到一個窗體(因為窗體的Visible可視屬性設置成了false,即窗體不可見)。但是,窗體的事件Form_Load, Form_Shown, Form_Paint 等是依舊可以使用的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM