标题中所谓百度收缩框效果,就是在输入数据的时候,自动提示,来张图就明白了:

用Combox来实现这个功能只是需要设置三个A开头的属性就OK了:AutoCompleteSource、AutoCompleteMode、AutoCompleteCustomSource

AutoCompleteSource属性的设置

获取或设置一个值,该值指定用于自动完成的完成字符串的源。也可以说是,指定用于自动完成的完成字符串的来源方式。其默认的属性值为None。但是在这里,我们要指定为CustomSource。

AutoCompleteMode属性

这个属性是用来获取或者设置作用于Combox控件下的方式,也就是自能提示功能的展现方式,有四个值:

Append 将最可能的候选字符串的其余部分追加到现有的字符,并突出显示追加的字符。类似于Excel中输入数据时提示输入
Suggest 显示与编辑控件关联的辅助下拉列表。此下拉列表填充了一个或多个建议完成字符串。百度的搜索框就是这样的效果
SuggestAppand 上面两种功能的结合
none 默认的属性

此处选择的属性是第三个 SuggestAppand,提示的同时选择性的输入

AutoCompleteCustomSource属性

获取或设置在AutoCompleteSource属性设置为CustomSource时使用的自定义的集合,通过这个属性可以来设置提示的下拉列表框的值。是一个数组的形式

注:下面这几句话是来自于MSDN中的原话

  1. 使用 AutoCompleteCustomSource、
    AutoCompleteMode 和 AutoCompleteSource 属性创建一个ComboBox,它可将所输入的字符串前缀与所维护源中的所有字符串的前缀进行比较来自动完成输入字符串的填写。 这对于频繁地有 URL、地址、文件名或命令输入其中的ComboBox 控件来说很有用。
  2. AutoCompleteCustomSource 属性的使用是可选的,但必须将AutoCompleteSource 属性设置为
    CustomSource 后才能使用AutoCompleteCustomSource。
  3. AutoCompleteMode 和 AutoCompleteSource 属性必须一起使用。

TextChange事件

    这个事件,是输入文本框中的值改变的时候触发,由于用户输入的数据是不定的,故我们可以再这个事件中来设置AutoCompleteCustomSource 的值,也就是设置匹配的项。也可以在TextUpdate事件中来设置,但是这个事件中设置的效果不是很好,没有TextChange中反应那么及时。在这个事件中使用的匹配数据源是在窗体的加载事件中提供的下拉数据源,并且把这个数据源存放在一个List<string>集合lists中,所以可以直接使用,当然也可以从数据库中通过模糊查询进行匹配来获得数据源。
TextChange的代码如下:
<span style="font-size:18px;">private void cbAcupoint_TextChanged (object sender, EventArgs e)
{
string txt = cbAcupoint.Text;//cbAcupoint 是Combox控件的名称
if (!string.IsNullOrEmpty(txt))
{
List<string> res = listAcupoint.FindAll(ComparisionConditionAcupoint);//数据源的查找,listAcupoint中存放的是窗体加载时的数据
cbAcupoint.AutoCompleteCustomSource.AddRange(res.ToArray());
}
}</span>

上面的代码中,listAcupoint是窗体加载时获得的下拉列表的数据源,是一个List<string>的集合。FindAll()方法,获得满足条件的所有数据项,里面要传递一个委托函数,用来设置比较的条件,委托的原型可以通过F12来进行查看。得到所有满足条件的数据后,转换成数组赋值给AutoCompleteCustomSource即可。

委托函数如下:
<span style="font-size:18px;">//比较条件
public bool ComparisionConditionAcupoint (string s)
{
Regex reg = new Regex("^" + cbAcupoint.Text + ".");
bool b = reg.IsMatch(s);
return b;
}</span>

集合listAcupoint的FindAll()方法在进行查找的时候将listAcupoint中每一个项传递到上面这个委托函数中,用一个参数s来接收,如果满足条件,返回一个true,这个s就会成为查找的结果中的一项,如果返回false就代表当前项不合格

通过上面两段代码和属性的设置就能够实现我们想要的效果,实际项目中做的是一个穴位和病症的例子,效果如下:

Combox 实现百度收索框效果的更多相关文章

  1. 【亲测好用!】shell批量采集百度下拉框关键词

    [亲测好用!]shell批量采集百度下拉框关键词 SEO工具  方法  11个月前 (11-18)  2153浏览 3条评论 百度已收录 一直想写一篇用shell采集百度下拉框关键词的教程,个人感觉用 ...

  2. jQuery动态提示消息框效果

    效果预览:http://keleyi.com/keleyi/phtml/jqtexiao/2.htm 原文:http://keleyi.com/a/bjac/hxv86dyi.htm <!DOC ...

  3. JavaScript实战(带收放动画效果的导航菜单)

    虽然有很多插件可用,但为了共同提高,我做了一系列JavaScript实战系列的实例,分享给大家,前辈们若有好的建议,请务必指出,免得误人子弟啊! ( 原创文章,转摘请注明:苏福:http://www. ...

  4. 分享一个jquery写的类似于百度的搜索框,(可动态配置,可单列或者table格式,可填充数据)

    需求:类似于百度的搜索框,可配置,可单列可table格式,可填充数据.页面可多次使用,简单,易用. 想法:使用jquery,css,ajax,前台调用,后台返回json数据. jquery代码: va ...

  5. 【转】提示框第三方库之MBProgressHUD iOS toast效果 动态提示框效果

    原文网址:http://www.zhimengzhe.com/IOSkaifa/37910.html MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单.方便,并且可以对显 ...

  6. JS组件Bootstrap实现弹出框和提示框效果代码

    这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码,对弹出框和提示框感兴趣的小伙伴们可以参考一下 前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编 ...

  7. jQuery实现鼠标移到元素上动态提示消息框效果

    当光标移动到某些元素上时,会弹出像tips的提示框,这种效果想必大家都有见到过吧,下面有个不错的示例,大家可以感受下 当光标移动到某些元素上时,会弹出像tips的提示框. 复制代码代码如下: < ...

  8. WPF提示框效果

    WPF提示框效果 1,新建WPF应用程序 2,添加用户控件Message 3,在Message中编写如下代码 <Border x:Name="border" BorderTh ...

  9. Android较低版本(<5.2) 页面默认Select选择框效果的BUG解决

    Bug描述: 使用低版本安卓(<5.2),在微信上打开网页,点击下拉框,会出现如下图所示的用来展示select选项的弹出框: 在选项较少的时候,可以向下滑动,将选项滑到底部 滑动前: 滑动后: ...

随机推荐

  1. scala学习笔记2

    一.算术和操作符重载 a + b 是如下方法的简写: a.+(b) 在scala中你可以使用任何符号来为方法命名.比如BigInt类就定义了一个/%的方法,该方法返回一个对偶,对偶的内容是除法操作得到 ...

  2. asp.net mvc 用Redis实现分布式集群共享Session。

    1.这两天研究Redis搞分布式session问题,网上找的资料都是用ServiceStack.Redis来实现的,但是在做性能测试的时候发现最新的v4版本有限制每小时候最多请求6000次,因为官网开 ...

  3. LtUpload上传组件

    <?php/** * The Upload class * @author Alex Lee <iuyes@qq.com> * @license http://opensource. ...

  4. 【Servlet】—在servlet中常混的请求路径

    在页面请求,后台获取相关请求路径是,自己长搞混的几个路径,再次做次标记,不要每次使用想不起来是,都去写一个小的demo来测试. request.getContextPath(); request.ge ...

  5. 百度 迷你版 UMeditor富文本编辑器 使用方法

    第一步:下载编辑器 到官网下载 umeditor 最新版源码版本,下载之后打开 _examples/index.html 就可以看到演示例子.[下载页面] 第二步:部署编辑器到页面 解压下载的包,放到 ...

  6. C#从数据库读取数据到DataSet并保存到xml文件

    using System; using System.Data; using System.Xml; using System.Data.SqlClient; using System.IO; pub ...

  7. 十天学会单片机Day2键盘检测(独立键盘、矩阵键盘)

    1.键盘的分类 编码键盘:键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘 非编码键盘:靠软件编程来识别的称为非编码键盘.独立键盘.矩阵键盘 2.按键消抖   ...

  8. 9.python的布尔类型与流程控制

    布尔类型其实可以算是一种特殊的数字,下面是 help() 函数得到的帮助信息: Help on class bool in module __builtin__: class bool(int) | ...

  9. swift 2

    ... ..< func a(inout a)  //by ref  use &xx Parameters passed to functions are constants by de ...

  10. 完全面向于初学者的Node.js指南

    新的上班时间是周二至周六,工作之余当然要坚持学习啦. 希望这篇文章能解决你这样一个问题:“我现在已经下载好Node.Js了,该做些什么呢?” 原文URL:http://blog.modulus.io/ ...