WinForm中Component Class、User Control及Custom Control的區別

WinForm中Component Class、User Control及Custom Control的區別和使用建議

NET Framework 為您提供了開發和實現新控件的能力。除了常見的用戶控件外,現在您會發現,您可以編寫能執行自身繪圖的自定義控件,甚至還可以通過繼承擴展現有控件的功能。確定創建何種類型的控件可能會費一番功夫。本節重點介紹了各類可繼承控件間的區別,同時提供關係到為項目選擇的類型的注意事項。

1、 Component Class

Component Class可以從任何現有的Windows 窗體控件繼承產生新的控件。此方法使您得以保留Windows 窗體控件所有固有功能,然後通過添加自定義屬性、方法或其他功能擴展此固有功能。例如,可以創建一個從TextBox 繼承的控件,該控件只接受數字並能自動將輸入轉換為值。這樣的控件可能包含驗證代碼,每當文本框中的文本發生更改時就會調用此代碼,另外,控件還可能有一個附加的“值”屬性。在某些控件中,也可以通過重寫基類的OnPaint 方法將自定義外觀添加到控件的圖形接口上。

處於下列情況時繼承Windows 窗體控件:

* 大多數所需的功能已經與現有的Windows 窗體控件相同。

* 不需要自定義圖形接口,或者想為現有控件設計一個新的圖形前端。

2、User Control

用戶控件是封裝在公共容器內的Windows 窗體控件的集合。此容器包含與每個Windows 窗體控件相關聯的所有固有功能,允許您有選擇地公開和綁定它們的屬性。用戶控件的例子之一可能是已生成的顯示數據庫中客戶地址數據的控件。該控件可能包括幾個用來顯示字段的文本框,幾個用來通過記錄定位的按鈕(Button) 控件。可以有選擇地公開數據綁定屬性,可以將整個控件打包並在應用程序之間重複使用。

處於下列情況時使用 UserControl :

* 要將若干個Windows 窗體控件的功能合成一個可重新使用的單元。

3、 Custom Control

Custom Control是通過從Control 繼承來完全從頭地創建一個控件。 Control 類提供控件(例如事件)所需的所有基本功能,但不提供控件特定的功能或圖形接口。與通過從用戶控件或現有Windows 窗體控件繼承來創建控件相比,通過從Control 類繼承來創建控件需要耗費的心思和精力要多得多。因為作者必須為控件的OnPaint 事件編寫代碼以及所需的任何功能特定代碼,但同時也允許作者根據自己的需要,靈活地自定義調整控件。時鐘控件即是一個自定義控件,它複製模擬時鐘的外觀和操作,自定義繪圖將被調用來促使時鐘指針走動,以響應內部計時器組件的Tick 事件。

處於下列情況時使用Custom Control:

* 想要提供控件的自定義圖形化表示形式。

* 需要實現無法從標準控件獲得的自定義功能。