先看一下关键代码:

DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("VV");
dt.Rows.Add(new string[] { "王一", "x" });
dt.Rows.Add(new string[] { "赵一", "z" });
dt.Rows.Add(new string[] { "王二", "y" });
dt.Rows.Add(new string[] { "赵二", "w" }); this.comboBox1.DataSource = dt;
this.comboBox1.DisplayMember = "Name";
this.comboBox1.ValueMember = "VV";
this.comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems; //设置自动完成的源
this.comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; //设置自动完成的的形式

上面的 AutoCompleteSource 是大家应该关注的一点,具体的值有9种选择,其中8种是可以研究一下的:

(1) DisplayMember 与ValueMember 属性的区别
ValueMember绑定的是对应的值 , 所对应的值就是一条记录里面有标识列ID(唯一) 有显示的列(如名称,可重复) 。 ValueMember 可以成为名称,也可成为ID . 但是一般来说都只绑定ID, 这样好处理,也很方便识别。
DisplayMember 绑定的是需显示的字段数据 如:北京。

一般 DisplayMember是显示给客户看的。而ValueMember
是绑定处理程序标识给程序员看的.

combobox控件显示的是DisplayMember
绑定的字段,也就是说用控件的text属性取的值是DisplayMember
绑定的字段。

而用combo.SelectedValue就可以取得选中项的ValueMember
值(未证实)。

(2) SelectedValue 属性

获取或设置由 ValueMember 属性指定的成员属性的值。

类型:System.Object,包含由 ValueMember 属性指定的数据源成员的值的对象。

用法:textBox1.Text = ListBox1.SelectedValue.ToString();

说明:当设置了DataSource 属性后,SelectedValue 属性值会默认为第一行,因此,如果不希望ComboBox自动选择第一行,还需在设置完DataSource 后自行将SelectedValue 设为“”。(根据SelectedValue的值类型设置,如果是字符就设置“”,如果是数值可设置为0)

PS: 可使用 combox.Items.Add(“items的内容”);方法来插入字段。

(3) AutoCompleteMode 属性
获取或设置控制自动完成如何作用于combobox的选项。即自动完成的形式。
其取值范围:
None 禁用 ComboBox 和 TextBox 控件的自动完成功能。
Suggest 显示与编辑控件关联的辅助下拉列表。此下拉列表填充了一个或多个建议完成字符串。
Append 将最可能的候选字符串的其余部分追加到现有的字符,并突出显示追加的字符。
SuggestAppend 同时应用 Suggest 和
Append 选项。 既显示下拉列表,也自动追加文字。

(4) AutoCompleteSource 属性
获取或设置一个值,该值指定用于自动完成的完成字符串的源。指定自动完成的源。
其取值范围:
FileSystem 将文件系统指定为源。
HistoryList 包括历史记录列表中的统一资源定位器 (URL)。
RecentlyUsedList 包括最近使用的 URL 列表中的统一资源定位器 (URL)。
AllUrl 将 HistoryList 和
RecentlyUsedList 的等效项指定为源。
AllSystemSources 将 FileSystem 和
AllUrl 的等效项指定为源。当 AutoCompleteMode 已设置为某个值,而不是默认值时,此即为默认值。
FileSystemDirectories 指定仅自动完成目录名而不自动完成文件名。
CustomSource 将内置 AutoCompleteStringCollection 中的字符串指定为源。
None 指定当前没有使用任何 AutoCompleteSource。这是 AutoCompleteSource 的默认值。
ListItems 指定 ComboBox 的项表示源。

后记
尽管上述的自动完成功能基本可以满足日常用途,但我希望自动完成能模糊的自动匹配所输入文字之前的部分,例如“中国北京大学”,只要输入“北京”就能找出来。但上述方法只能实现输入“中国”后,自动补全后面部分,或显示所有以“中国”为开头的Items。

参考文章:

DeepSky_ ,  C# ComboBox自动完成功能的示例。

C# ComboBox自动完成功能的示例的更多相关文章

  1. easyui combobox开启搜索自动完成功能

    combo.json [{ "id":-1, "text":" ", "spell":"" },{ ...

  2. winform textbox 的自动实现功能

    好久没写博客了,主要是太懒了,之前因为做bs的比较多现在想转cs端了,虽然现在做cs也一年了,可接触的东西太过零碎了,以至于感觉这一年好像什么都没有学到.估计是因为学了之后没有记录,不扎实,然后又忘记 ...

  3. Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入

    本节主要内容:       1.实例化Spring容器示例    2.利用Spring容器创建JavaBean对象    3.如何控制Bean实例化    4.利用Spring实现bean属性sett ...

  4. jquery 实现邮箱输入自动提示功能:(一)

    记得去年做某个项目的时候,用到了邮箱输入自动提示功能,于是网上搜了一下,发现了这个写得不错,现在回想起来,转载一下,方便查阅. 邮箱的广泛使用得益于它的免费,因此很多网站在注册的时候都会直接使用邮箱作 ...

  5. ASP.NET输入文本框自动提示功能

    在ASP.NET Web开发中会经常用到自动提示功能,比如百度搜索.我们只要输入相应的关键字,就可以自动得到相似搜索关键字的提示,方便我们快速的输入关键字进行查询. 那么在ASP.NET中,如果我们需 ...

  6. WdatePicker 日期控件- 功能及示例

      3. 多语言和自定义皮肤多语言支持 通过lang属性,可以为每个日期控件单独配置语言,当然也可以通过WdatePicker.js配置全局的语言语言列表和语言安装说明详见语言配置 示例3-1 多语言 ...

  7. EasyUI 1.3.2 中 Combobox自动检索 键盘上下选择Bug问题

    EasyUI 自带的Combobox控件,提供了下拉列值自动检索功能. 在用到的EasyUI 1.3.2版本中还是有点问题,在键盘上下键移动选择过程中只能定位在第一个,不能正常向下移动 问题解决方式: ...

  8. thinkPHP 表单自动验证功能

    昨天晚上我们老大叫我弄表单自动验证功能,愁了半天借鉴了好多官网的知识,才出来,诶,总之分享一下我自己的成果吧! thinkphp 在Model基类为我们定义了自动验证的函数和正则表达式,我们只需要在对 ...

  9. 【实用篇】Android之应用程序实现自动更新功能

    我个人用的是友盟提供的自动更新组件,因此在这里只描述如何实用友盟提供的组件来完成程序的自动更新,步骤如下: 1.登录友盟官网,点击注册一个友盟账号. 2.注册成功后将会自动进入到添加新应用界面,选择添 ...

随机推荐

  1. Android笔记——导入Github开源项目CircleRefreshLayout

    百度n久都找不到android studio导入第三方类库的正确方法,纠结睡不着 ,最后终于蒙到了方法,原来想太多了  ---------------------------------------- ...

  2. Win软件私家珍藏-常用软件工具使用总结

    原文:Win软件私家珍藏-常用软件工具使用总结 Windowns常用软件 看图 FastStoneImageViewer 免费软件,好用到爆!没广告!功能齐全!不光能看图,还能修图! Picasa3 ...

  3. JSP Session管理

      本篇讲述JSP中session的相关知识和管理方法: 先说说cookie与session 在web中常用的两种用户信息管理方式:cookie 和 session. cookie是保存在用户客户端的 ...

  4. 机器人学 —— 轨迹规划(Sampling Method)

    上一篇提到,机器人轨迹规划中我们可以在 Configuration Space 中运行A* 或者 DJ 算法.无论A* 还是DJ 算法,都必须针对邻域进行搜索,如果2自由度则有4邻域,2自由度则有8邻 ...

  5. python 调用 C++ code

    本文以实例code讲解python 调用 C++的方法. 1. 如果没有参数传递从python传递至C++,python调用C++的最简单方法是将函数声明为C可用函数,然后作为C code被pytho ...

  6. jdk、apache-ant结合yuicompressor配置的CSS与JS合并压缩工具

    前序:网上很多css与js合并打包工具,其中最流行的就是ant结合yui-compressor,鉴于学习与工作需要今天就学习了一下这种方式,供大家学习交流. 步骤:1.安装jdk,并配置其变量环境:有 ...

  7. Linux suse x86_64 环境上部署Hadoop启动失败原因分析

    一.问题症状: 在安装hadoop的时候报类似如下的错误: # A fatal error has beendetected by the Java Runtime Environment: # #  ...

  8. linux下svn的常用代码【转】

    转自:http://www.2cto.com/os/201205/130192.html 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录)    例 ...

  9. 创建下拉列表并通过ajax填充下拉数据

    $(document).ready(function(e) { jQuery.post('${basePath}/customerService/getCustomerService4List.do' ...

  10. 深入理解Java内存模型(四)——volatile

    volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这 ...