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

简介:

先看一下关键代码:

复制代码
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自动完成功能的示例。

 

 

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。


    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6017156.html ,如需转载请自行联系原作者



相关文章
|
1月前
|
C# 数据库 开发者
44.c#:combobox控件
44.c#:combobox控件
16 1
|
3月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
48 0
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
26 0
|
3月前
|
安全 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
34 0
|
3月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
17 0
|
3月前
|
存储 编解码 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
37 0
|
5月前
|
JavaScript 前端开发 Java
javascript实现像java、c#之类的sleep暂停的函数功能
javascript实现像java、c#之类的sleep暂停的函数功能
41 0
|
3月前
|
存储 数据管理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)
26 0
|
3月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C#)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C#)
33 0
|
1天前
|
C#
【C#】 如何实现文本框历史记录提示功能
【C#】 如何实现文本框历史记录提示功能
10 0