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

        }
    }
}
时间: 2024-10-08 05:29:37

C# TextBox带提示说明的搜索输入框的相关文章

搜索输入框提示--输入延迟,仿自动脑学院

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src='../node_modules/jquery/dist/jquery.min.js'></script> <style> html, body { font-fa

百度地图API显示多个标注点带提示的代码

效果如图: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>百度地图API显示多个

搜索输入框测试用例

对于一般的网站而言,经常有两种搜索功能,一种为简单搜索,一种为高级搜索.对于简单搜索,也就是一输入框加一个搜索按钮,可以认为模糊搜素,而高级搜素,则为准确搜索,根据各种条件,搜索自己想要的内容. 一:简单搜索输入框测试用例 1:不输入任何字符,点击搜索按钮,一般搜索出网站所有的信息 2:一般搜索输入框中的有文章显示,当鼠标点击时,文章消失 3:输入全角/半角中文字符(一个字符.超长字符.已经信息字符) 4:输入全角/半角英文字符(一个字符.超长字符.已经信息字符) 5:输入全角/半角特殊字符[e

【ExtJs】带日期组件的文本输入框、容器与Ext.Msg.alert告警框告警两次

ExtJs的UI组件主要模仿客户端的界面效果,甚至其编程方式都有类似之处. 一.基本目标 比如如下的组件,与VC6中的<[mfc]不同对话框之间互相操控.全局变量与日期控件>(点击打开链接)就有异曲同工之妙. 其基本的思想也是先设置两个日期组件与按钮组件,然后,在点击按钮,就触发事件. 二.制作过程 首先,这个网页全程运用ExtJs编程,因此基本的HTML布局,处理引入ExtJS资源之外什么都没有.甚至可以把下面的ExtJs脚本完全写在一个Js里面. <!DOCTYPE HTML PUB

Swift - 带结果列表的搜索条(UISearchDisplayController)的用法

(注:自iOS8起,苹果便废弃UISearchDisplayController的使用,改为使用UISearchController来实现类似功能,可参考我的另一篇文章“Swift - 使用UISearchController实现带搜索栏的表格”) UISearchDisplayController控件默认封装了Search Bar和Table View,可同时提供搜索和结果表格显示功能. 下面提供了一个使用样例,同时通过代码定制Search Bar的一些属性来实现自定义的外观和效果,并且展示用

带分类页签搜索框的实现

需求:类似于淘宝搜索框,可以根据选择不同的分类进行帅选查询,效果图如下: aspx代码如下: <div id="divSearch" class="form-wrapper"> <div class="tab_area"> <div id="divWaterMeterCode" class="tab hover"><span onclick="setSea

WPF自定义控件Textbox 带水印 以及错误信息显示_02

前面写过一篇关于TextBox自定义控件 带水印以及错误信息显示的随笔 但是有一些BUG和一些功能不全面 这次基本补全 算是对上一篇的完善和升级. 前面只是实现了基本的水印信息以及错误信息显示.缺少了部分其他的功能 这次增加了以下功能: 1.限定textbox文本框输入长度 2.修复错误信息显示BUG. 3.更改显示样式 4.修改默认值赋值问题 先给大家来张图片看看 先贴出后台代码 public partial class SelfWateMarkTextbox : System.Windows

WPF TextBox背景提示文字

<TextBox HorizontalAlignment="Center" VerticalAlignment="Center" Width="100"> <TextBox.Resources> <VisualBrush x:Key="HintText" TileMode="None" Opacity="0.5" Stretch="None&quo

笔记-CSS3实现3D搜索输入框

题外话 今天拜读了大漠的<<图解CSS3>>发现里面这个按钮的实例挺赞的,稍微完善了一下原来例子. 去掉一些现在不用的前缀,补全了最终版的.clearfix,还有样式稍作修改~~ 原版效果图: 预备知识 基础布局知识 CSS2.1 && CSS3 制作原理(CSS3特性) box-shadow – 盒子阴影 -> 使用多层阴影达到立体效果 box-image:linear-gradient -> 渐变效果实现-. box-radius: – 实现圆角效果