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