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

用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. ASP.NET中@Page指令中的AutoEventWireup

    AutoEventWireup:指示控件的事件是否自动匹配 (Autowire).如果启用事件自动匹配,则为 true:否则为 false.默认值为 true.如果设为false,则事件不可用.有关更 ...

  2. 64位操作系统弹出"Failed to load the JNI shared library “E:/2000/Java/JDK6/bin/..jre/bin/client/jvm.dll”

    64位操作系统弹出"Failed to load the JNI shared library /..jre/bin/client/jvm.dll”,最大的可能就是jdk的版本问题.去你的C ...

  3. Sublime Text 2 安装与使用SFTP插件

    http://wbond.net/sublime_packages/sftp/usage http://www.360doc.com/content/13/0603/15/9437165_290170 ...

  4. B-树

    定义: B-树是一种平衡的多路查找树,在文件系统中有所应用.主要用作文件的索引. 特性:(M为层数) 1.定义任意非叶子结点最多只有M个儿子:且M>2: 2.根结点的儿子数为[2, M]: 3. ...

  5. SVG矢量图--爱心

    aixin.xml: <!-- height:width=viewportHeight:viewportWidth --> <vector xmlns:android="h ...

  6. How to move the user document folder to D disk[Windows 7]

    when you install windows 7 OS, the system ask for you enter username and password, then you have not ...

  7. 异步导出excel

    最近看园里有几篇写有关导出导入excel的博客,我正好最近在项目中也有涉及想来一起分享一下,正好整理一下自己的思路. 一.异步的方式是通过iframe来实现,代码如下: if ($('#downloa ...

  8. python 上下文管理器

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 上下文管理器(context manager)是Python2.5开始支持的一种语 ...

  9. SQL30081N 检测到通信错误。正在使用的通信协议:"TCP/IP"

    环境描述: 今天在虚拟机上安装了Linux系统,并且装了DB2,但是在连接的时候遇到了个问题,百思不得其解.下面是具体问题跟解决办法 问题描述: 解决办法: 1.先ping服务器是否可以ping通. ...

  10. 反射 reflect 初始学习

    类也是对象,本身是java.lang.Class 类的对象. Class的三种表示方式: 1.Class a = A.class: 类名.class的方式.经常在日志记录里面,获取当前类的日志记录生成 ...