场景: 对于输入框,如果用户不知道要输入什么,这个时候有个提示是最好了,下面是带提示说明的搜搜输入框,如图
C# Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace EMR
{
public class SerachBox:TextBox
{
public string _HintString = "请输入住院号或姓名查询病历信息";
public SerachBox()
{
this.Margin = new Padding(0,0,0,0);
this._SerachButton.Text = "搜索";
this._SerachButton.TextAlign = ContentAlignment.MiddleCenter;
this._SerachButton.ForeColor = Color.Black;
this._SerachButton.Margin = new Padding(0, 0, 0, 0);
_SerachButton.BackColor = Color.Green;
this.Text = _HintString;
this.ForeColor = Color.Gray;
_SerachButton.Size = new Size(60, this.Height);
this.Controls.Add(_SerachButton);
_SerachButton.Dock = DockStyle.Right;
_SerachButton.Location = new Point(this.Width - 50, 0);
_SerachButton.MouseHover += new EventHandler(ButtonHand);
_SerachButton.MouseClick += new MouseEventHandler(ButtonClick);
}
private EventHandler serachHandler;
public event EventHandler SerachEvent
{
add
{
serachHandler += value;
}
remove
{
serachHandler = value;
}
}
public void ButtonClick(object sender, EventArgs e)
{
if(serachHandler !=null)
{
serachHandler.Invoke(this,null);
this.Select(this.Text.Length,0);//光标移动到末尾
}
}
public void ButtonHand(object sender, EventArgs e)
{
this._SerachButton.Cursor = System.Windows.Forms.Cursors.Hand;
}
public void SetFontColor(bool bo)
{
if (bo)
{
this.ForeColor = Color.Gray;
this._SerachButton.ForeColor = Color.Black;
}
else
{
this.ForeColor = Color.Black;
this._SerachButton.ForeColor = Color.Black;
}
}
private Label _SerachButton = new Label();
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
//请输入住院号或姓名查询病历信息
if (this.Text == _HintString)
{
this.Clear();
this.SetFontColor(false);
}
}
protected override void OnMouseLeave(EventArgs e)
{
base.OnMouseLeave(e);
if (this.Focused && this.Text == "")
{
this.Text = _HintString;
this.SetFontColor(true);
}
if (this.Text == _HintString)
{
this.SetFontColor(true);//显示灰色
}
else
{
this.SetFontColor(false);//显示黑色
}
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
e.Handled = true;
if (this.Text == _HintString)
{
this.Text = "";
}
if(e.KeyChar.ToString() == "\r")
{
if (serachHandler != null)
{
serachHandler.Invoke(this, null);
this.Select(this.Text.Length, 0);//光标移动到末尾
}
}
this.SetFontColor(false);//显示黑色
e.Handled = false;
}
protected override void OnMouseHover(EventArgs e)
{
base.OnMouseHover(e);
if (this.Focused && this.Text == _HintString)
{
this.Text = "";
this.SetFontColor(false);//显示黑色
}
}
}
}
原文地址:http://blog.csdn.net/taoerit/article/details/43193605