C# WinForm 慎用 override CreateParams 來重載表單的一些特性

來源:互聯網
上載者:User

表單和控制項的屬性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 等是依舊可以使用的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.