4.7 實現自定義屬性
在本章前面的章節中我們實現的許多功能都是借助於系統提供的設計時元數據屬性支持實現的 ,如:
顯示屬性描述信息的Description 屬性
[Description("描述文本")]
指定屬性在屬性窗口中類別的Category 設計屬性
[Category(" 屬性窗口中的類別名稱")]
指定屬性編輯器的Editor 設計屬性
[Editor(typeof(FileNameEditor), typeof(UITypeEditor))]
指定屬性類型轉換器的TypeConverter 設計屬性
[TypeConverter(typeof(SolidCoordinateConverter))]
這些都是系統提供的,每個屬性都有它自己的功能。那麼如果我們想自定義一個設計屬性,實 現自定義的功能,該怎麼實現呢?要設計自定義屬性,僅需要直接或間接地從System.Attribute 派生即可,與傳統類功能完全一樣。我們既可以使用System.Attribute 來定義控件設計期控制, 也可以用System.Attribute 指定運行時的控制。
本節就以一個示例演示控件中的設計屬性是怎麼實現的。首先還是先說明一下本節控件屬性要 實現的功能,如圖4-35 所示。
此控件具有一個Num 屬性,允許開發人員指定一個值。在控件的屬性上指定了一個NumValidate 類型的驗證屬性,該屬性需要傳入兩個參數,供開發人員指定區間,如果在屬性窗口中指定的屬性 不在區間內,則會有警告提示(如圖4-36 中紅色警告提示)。
圖4-36 控件設計屬性示例