因?yàn)橐隽黧w布局,但兩個(gè)控件沒(méi)辦法組合,就做自定義控件。這個(gè)控件需要一個(gè)text設(shè)置文本,一個(gè)pic設(shè)置圖片顯示,圖片通過(guò)選擇獲取,在屬性面板里能夠修改。
添加用戶控件之后就可以自己隨意設(shè)置控件內(nèi)容了,這里說(shuō)下關(guān)于屬性的一些設(shè)置。
[ToolboxItem(true)]public partial class UserControl1 : UserControl
1 [ToolboxBitmap(typeof(System.Windows.Forms.PictureBox))]2 public partial class UserControl1 : UserControl
如果不想用系統(tǒng)的圖標(biāo),要使用自己的圖標(biāo),可以這樣(這部分未測(cè)試,源于參考文章)
1 [ToolboxBitmap(typeof(MyPanel), "Windowsapplication1.Images.MyPanel.bmp")]2 public class MyPanel : UserControl
不過(guò),一定要注意路徑,WindowsApplication1.Images.MyPanel.bmp表示,解決方案是WindowsApplication1,目錄是Images,文件名是MyPanel.bmp,同時(shí),這個(gè)圖片必須是“嵌入的資源”(點(diǎn)擊文件,右鍵,屬性,有一個(gè)文件屬性,其中,在生成操作中,可以選擇"嵌入的資源")
1 [Browsable(true)]2 [Description("屬性描述"), Category("屬性類(lèi)別"), DefaultValue("屬性默認(rèn)值,重置時(shí)使用")]3 public override string Text4 {5 get { return label1.Text; }6 set { label1.Text = value; }7 }
category設(shè)定的是屬性在屬性面板上顯示的類(lèi)別,當(dāng)使用了類(lèi)別時(shí),組件屬性和事件可以按邏輯分組顯示在屬性瀏覽器中。Category("Appearance")就可以把屬性從雜項(xiàng)轉(zhuǎn)移到外觀。
(摘抄自參考文章)用于設(shè)置默認(rèn)的值,對(duì)于string,bool,int,可以直接寫(xiě)出來(lái),如[DefaultValue(10)],這是可以的,不過(guò),不是這三種類(lèi)型的話,就比較麻煩,一定要先轉(zhuǎn)化為string才能設(shè)置成功。如上面的DarkGray,這是系統(tǒng)定義的顏色,這還是比較好處理的。不過(guò),如果是一些自定義的顏色,如顏色是128,0,128,你應(yīng)該將128轉(zhuǎn)為16進(jìn)制,寫(xiě)成0x800080,前綴0x是一定要加的。最后就這樣[DefaultValue(typeof(Color), "0x800080")]
還有一種[DefaultValue(typeof(Color), "0, 70, 213")]
如果是這兩種特殊情況三種方法本人均未測(cè)試。
1 [Browsable(true)] 2 [Description("設(shè)置控件圖片"), Category("setPic"), DefaultValue(" ")] 3 public Bitmap setPic 4 { 5 get { return (Bitmap)this.pictureBox1.Image; } 6 set 7 { 8 this.pictureBox1.Image = value; 9 }10 }
這樣的話就會(huì)在屬性面板的設(shè)置中出現(xiàn)選擇資源的對(duì)話框來(lái)選擇。
在定義屬性的時(shí)候需要先設(shè)置好枚舉值,通過(guò)枚舉來(lái)定義屬性,如例下
1 public enum indexEnum 2 { 3 a, 4 b, 5 c 6 } 7 public indexEnum index; 8 [Browsable(true)] 9 [Description("設(shè)置index"), Category("Index"), DefaultValue("屬性默認(rèn)值")]10 public indexEnum Index11 {12 get { return index; }13 set { index = value; }14 }
附:
參考文章:常用Design屬性 【C#】媽媽再也不用擔(dān)心自定義控件如何給特殊類(lèi)型的屬性添加默認(rèn)值了,附自定義GroupBox一枚
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注