經常需要用到各種組合控件,每次組合太麻煩,通過打包成自定義控件,方便調用。
帶按鈕的文本框,如下圖:
文本框內可以輸入文本,響應文本框內容變化事件,按鈕可以設置點擊事件,圖標
通過3個組合控件實現。
1 新建自定義控件,添加兩個文本框,1個按鈕,1個鼠標提示控件(ToolTip)。
一個文本框作為背景,另一個文本框作為輸入框,一個按鈕點擊用,只需通過設置控件屬性,編輯成如下效果
2 添加常用屬性
[Category("自定義"), Description("按鈕圖片")] public Image ButtonImage { set { button.Image = value; } get { return button.Image; } } [Category("自定義"), Description("文本框鼠標懸停提示文本")] public string TextBoxToolTipText { set { toolTip1.SetToolTip(this.textBoxFront, value); } get { return toolTip1.GetToolTip(this.textBoxFront); } } [Category("自定義"), Description("按鈕鼠標懸停提示文本")] public string ButtonToolTipText { set { toolTip1.SetToolTip(this.button, value); } get { return toolTip1.GetToolTip(this.button); } } [Category("自定義"), Description("文本框內文本")] public string TextBoxText { set { textBoxFront.Text = value; } get { return textBoxFront.Text; } } private bool textBoxReadOnly = false; [Category("自定義"), Description("文本框只讀")] public bool TextBoxReadOnly { set { textBoxReadOnly = value; textBoxFront.ReadOnly = textBoxReadOnly; textBoxFront.ReadOnly = textBoxReadOnly; } get { return textBoxReadOnly; } } [Category("自定義"), Description("文本框背景色")] public Color TextBoxBackColor { set { textBoxBack.BackColor = value; textBoxFront.BackColor = value; } get { return textBoxBack.BackColor; } }
3 添加按鈕點擊事件(其他事件添加類似)
public delegate void ButtonClickEventHandler(Object sender, EventArgs e); public event ButtonClickEventHandler ButtonClick; //聲明事件 protected virtual void OnButtonClick(EventArgs e) { if (ButtonClick != null) { // 如果有對象注冊 ButtonClick(this, e); // 調用所有注冊對象的方法 } } private void button_Click(object sender, EventArgs e) { OnButtonClick(e); // 調用 OnButtonClick方法 }
4 屬性的使用:
5 事件的使用