在前面的文章裡我們制作了一個非常簡單的控件。現在我們回過頭來看看這些代碼透露出什麼信息。
這個類是直接從Control類派生出來的,自定義控件都是直接從Control類派生出來的。這個類定義了 一個屬性TextAlignment,用來控制文本在控件中顯示的位置:
[ Category("Alignment"), Description("Specifies the alignment of text.") ] public ContentAlignment TextAlignment { get { return alignmentValue; } set { alignmentValue = value; // The Invalidate method invokes the OnPaint method described // in step 3. Invalidate(); } }
在這個屬性之上有兩個Attribute,這兩個attribute描述了控件在設計時所表現出來的特征。我們來 看看在控件設計中有哪些主要用到的設計時Attribute。
BrowsableAttribute:描述是否一個屬性或事件應該被顯示在屬性浏覽器裡。
CategoryAttribute:描述一個屬性或事件的類別,當使用類別的時候,屬性浏覽器按類別將屬性分組 。
DescriptionAttribute:當用戶在屬性浏覽器裡選擇屬性的時候,description裡指定的文本會顯示在 屬性浏覽器的下邊,向用戶顯示屬性的功能。
BindableAttribute:描述是否一個屬性傾向於被綁定。
DefaultPropertyAttribute:為組件指定一個默認的屬性,當用戶在Form設計器上選擇一個控件的時 候,默認屬性會在屬性浏覽器裡被選中。
DefaultValueAttribute:為一個簡單類型的屬性設置一個默認值。
EditorAttribute:為屬性指定一個特殊的編輯器。
LocalizableAttribute:指示一個屬性是否能被本地化,任何有這個Attribute的屬性將會被持久化到 資源文件裡。
DesignerSerializationVisibilityAttribute:指示一個屬性是否或者如何持久化到代碼裡。
TypeConverterAttribute:為屬性指定一個類型轉換器,類型轉換器能將屬性的值轉化成其它的數據 類型。
DefaultEventAttribute:為組件指定一個默認的事件,當用戶在form設計其中選擇一個控件的時候, 在屬性浏覽器中這個事件被選中。
這些設計時的Attribute時很重要的,如果使用的好,將會對用戶的使用帶來很大的便利。
這一章我主要介紹了設計時的Attribute,接下來的文章我將通過代碼來介紹這些Attribute。