C#帶按鈕的文字框TextBoxContainButton
阿新 • • 發佈:2018-12-26
引用自:https://www.cnblogs.com/yepoint/p/7238667.html
以作學習,等我寫好了我的控制元件也出個教程
經常需要用到各種組合控制元件,每次組合太麻煩,通過打包成自定義控制元件,方便呼叫。
帶按鈕的文字框,如下圖:
文字框內可以輸入文字,響應文字框內容變化事件,按鈕可以設定點選事件,圖示
通過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 事件的使用
分類: WinForm經常需要用到各種組合控制元件,每次組合太麻煩,通過打包成自定義控制元件,方便呼叫。
帶按鈕的文字框,如下圖:
文字框內可以輸入文字,響應文字框內容變化事件,按鈕可以設定點選事件,圖示
通過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 事件的使用