ToolboxItem
有沒有試過寫一個用戶控件后,想它不出現(xiàn)在工具箱中,當然有,有時候是控件的Designer部分沒有寫好或沒寫,有時候是控件一拖出來就報錯,有時候是內(nèi)部使用的控件,不想別人一引用DLL就出現(xiàn)控件。其它設置方法可以很簡單。
[ToolboxItem(false)]
public class MyPanel : UserControl
這樣就可以了。“可惡”的用戶控件就自動隱藏了,不出現(xiàn)在工具箱中。不過,如果你不知道這樣的話,可以會引來一大堆的煩事。
ToolboxBitmap
寫好一個用戶控件后,在工具箱中出來的是一個藍色的齒輪,這就不是很漂亮了,也不能夠直觀地表達自己的意圖。如果更不幸的你的控件的名稱好難認的話,其它的開發(fā)者會很麻煩的。怎樣才能讓用戶控件在工具箱中顯示不同的圖標呢?
[ToolboxBitmap(typeof(System.Windows.Forms.Panel))]
public class MyPanel : UserControl
這樣就可以了,表示,你所做的用戶控件使用的圖標是Panel的圖標。
如果不想用系統(tǒng)的圖標,要使用自己的圖標,可以這樣
[ToolboxBitmap(typeof(MyPanel), "WindowsApplication1.Images.MyPanel.bmp")]
public class MyPanel : UserControl
不過,一定要注意路徑,WindowsApplication1.Images.MyPanel.bmp表示,解決方案是WindowsApplication1,目錄是Images,文件名是MyPanel.bmp,同時,這個圖片必須是“嵌入的資源”(點擊文件,右鍵,屬性,有一個文件屬性,其中,在生成操作中,可以選擇"嵌入的資源")
Category與Description
[Category("Appearance"), Description("陰影色")]
public System.Drawing.Color ShadowColor { get { …} set { …} }
這兩個是經(jīng)常都會寫在一起的屬性,Category表示類型,如屬性框中所顯示的外觀,布局等,當然,你可以自己寫一個,叫“自定義屬性”,而Description就是這個屬性的描述,用來說明屬性有什么用途。這兩個的設置相對都比較簡單,可以說,一看就知道,不過提一下,Appearance是特殊的詞,在屬性面板中,它就是外觀一欄。
DefaultValue
[DefaultValue(typeof(Color), "DarkGray")]
public System.Drawing.Color ShadowColor { get { …} set { …} }
用于設置默認的值,對于string,bool,int,可以直接寫出來,如[DefaultValue(10)],這是可以的,不過,不是這三種類型的話,就比較麻煩,一定要先轉(zhuǎn)化為string才能設置成功。如上面的DarkGray,這是系統(tǒng)定義的顏色,這還是比較好處理的。不過,如果是一些自定義的顏色,如顏色是128,0,128,你應該將128轉(zhuǎn)為16進制,寫成0x800080,前綴0x是一定要加的。最后就這樣
[DefaultValue(typeof(Color), "0x800080")]
Browsable
表示,是否在屬性面板中顯示這個屬性
[Browsable(true)]
表示,將在屬性面板中顯示這個屬性。
DesignerSerializationVisibility
表示,是否在*.Designer.cs文件中將設置的代碼寫出來,也就是是否要實現(xiàn)序列化
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
表示需要實現(xiàn)序列化。