当前位置: 代码迷 >> C# >> C# TextBox带提示说明的搜寻输入框
  详细解决方案

C# TextBox带提示说明的搜寻输入框

热度:142   发布时间:2016-05-05 05:00:19.0
C# TextBox带提示说明的搜索输入框

场景: 对于输入框,如果用户不知道要输入什么,这个时候有个提示是最好了,下面是带提示说明的搜搜输入框,如图


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);//显示黑色            }        }    }}


  相关解决方案