1. 程式人生 > >C#帶按鈕的文字框TextBoxContainButton

C#帶按鈕的文字框TextBoxContainButton

引用自:https://www.cnblogs.com/yepoint/p/7238667.html

以作學習,等我寫好了我的控制元件也出個教程

經常需要用到各種組合控制元件,每次組合太麻煩,通過打包成自定義控制元件,方便呼叫。

帶按鈕的文字框,如下圖:

clip_image001

文字框內可以輸入文字,響應文字框內容變化事件,按鈕可以設定點選事件,圖示

通過3個組合控制元件實現。

1 新建自定義控制元件,新增兩個文字框,1個按鈕,1個滑鼠提示控制元件(ToolTip)。

一個文字框作為背景,另一個文字框作為輸入框,一個按鈕點選用,只需通過設定控制元件屬性,編輯成如下效果

clip_image002

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 屬性的使用:

clip_image003

5 事件的使用

clip_image004

  分類:  WinForm

經常需要用到各種組合控制元件,每次組合太麻煩,通過打包成自定義控制元件,方便呼叫。

帶按鈕的文字框,如下圖:

clip_image001

文字框內可以輸入文字,響應文字框內容變化事件,按鈕可以設定點選事件,圖示

通過3個組合控制元件實現。

1 新建自定義控制元件,新增兩個文字框,1個按鈕,1個滑鼠提示控制元件(ToolTip)。

一個文字框作為背景,另一個文字框作為輸入框,一個按鈕點選用,只需通過設定控制元件屬性,編輯成如下效果

clip_image002

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 屬性的使用:

clip_image003

5 事件的使用

clip_image004