章鱼哥出品_VB.NET ComboBox、 TextBox 实现自动完成、自动过滤 模糊查询的功能
2014-10-03 21:13
1401 查看
本文以ComboBox为例讨论自动过滤功能,主要有两种方式:(TextBox也一样)
一、以AutoCompleteSource、AutoCompleteMode、AutoCompleteCustomSource这三个属性的设置来实现自动过滤。
但是这种方法只能从左到右的过滤,比如Items中有 12、13两项,输入1的时候就会出现12、13两项,但是输入2的时候就不会有任何显示。下面是这种方法的具体实现代码:
执行效果如图:
二、 模糊查询方式 看到网上有很多人问到如何做到模糊查询,就是输入字符串中的任意一个字符,就会显示全部符合条件的结果,如上面提到的12、13的例子,第一种方法就是实现不了输入2显示12的效果。这里笔者给出一种解决方法,具体实现如下:
代码执行效果如图:
一、以AutoCompleteSource、AutoCompleteMode、AutoCompleteCustomSource这三个属性的设置来实现自动过滤。
但是这种方法只能从左到右的过滤,比如Items中有 12、13两项,输入1的时候就会出现12、13两项,但是输入2的时候就不会有任何显示。下面是这种方法的具体实现代码:
' 自动过滤函数 '章鱼哥 QQ 3107073263 群 309816713 Private Sub AutoComplete(ByVal ComBox As ComboBox) 'With 函数的使用,不了解的可以上网查下 With ComBox '首先清空自动完成自定义数据源,这样您可以在每次combobox的items项改变时,调用该函数 .AutoCompleteCustomSource.Clear() '设置自动完成的完整字符串源,共有9种选项,这里选择了自定义源 .AutoCompleteSource = AutoCompleteSource.CustomSource '设置组合框的文本完成行为,有四种选项,这里选择的是自动完成和列表框显示的组合 .AutoCompleteMode = AutoCompleteMode.SuggestAppend '将items中所有的字符串添加到自定义数据源中 For Each item As String In .Items .AutoCompleteCustomSource.Add(item) Next End With End Sub
执行效果如图:
二、 模糊查询方式 看到网上有很多人问到如何做到模糊查询,就是输入字符串中的任意一个字符,就会显示全部符合条件的结果,如上面提到的12、13的例子,第一种方法就是实现不了输入2显示12的效果。这里笔者给出一种解决方法,具体实现如下:
'这种方法是使用一个ComboBox 和ListBox的组合的方式实现,ComboBox命名为ComboBox1 ,ListBox是代码创建 ' 在ComboBox1的TextChanged事件中执行操作如下 Private Sub ComboBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged '获取输入的字符串 Dim text As String = ComboBox1.Text.Trim() '用以记录匹配字符串的个数 Dim index As Integer = 0 Dim listBox1 As New ListBox ' list_Pd是定义的全局布尔变量,用于判断是否创建了listbox控件 If list_Pd Then '如果已经创建 For Each contr As Control In Me.Controls '遍历窗体中的所有控件,寻找创建的listbox控件 If contr.Name = "list" Then listBox1 = CType(contr, ListBox) End If Next Else '如果没有创建,则调用Custom_ListBox()函数创建 listBox1 = Custom_ListBox(ComboBox1) End If '将listbox 控件所有项清空 listBox1.Items.Clear() '将查询的结果添加到listbox 的items 中 For Each Str As String In ComboBox1.Items '将所有的字符串全部转化为小写再判断,这样输入就不用分大小写了 If Not text = "" And Str.ToLower.Contains(text.ToLower) Then index += 1 listBox1.Items.Add(Str) End If Next '判断符合条件的项的个数, If index = 1 Then ComboBox1.Text = listBox1.Items(0) listBox1.Visible = False ElseIf index > 1 Then listBox1.Visible = True Else listBox1.Visible = False End If End Sub '自动创建listbox控件的函数 Private Function Custom_ListBox(ByVal ComBox As ComboBox) As ListBox Dim Listbox As New ListBox Dim point As Point point.X = ComBox.Location.X point.Y = ComBox.Location.Y + ComBox.Height With Listbox .Name = "list" '设置控件名称 .Location = point '设置控件的位置,放在combobox的下面 .Width = ComBox.Width '控件的宽度,与combobox的宽一样 .Height = ComBox.Height * (ComBox.Items.Count + 1) '高度 .Items.Clear() .Visible = False End With AddHandler Listbox.Click, AddressOf ListBox_Click '添加点击事件 ListBox_Click() Me.Controls.Add(Listbox) '这步重要 将控件添加到窗体中。没有这句将不会显示listbox控件 list_Pd = True Return Listbox End Function '创建的listbox的点击事件函数 Private Sub ListBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) CType(sender, ListBox).Visible = False ComboBox1.Text = CType(sender, ListBox).SelectedItem End Sub
代码执行效果如图:
相关文章推荐
- 章鱼哥出品——VB.NET 屏幕自适应功能的实现
- 继承 System.Windows.Forms.ComboBox 实现支持自动完成功能的 ComboBox!个人感觉还可以!!!
- 【转】文本框(Textbox)和下拉框(Combobox)自动联想功能的实现
- 使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(下)
- 100% .NET Control_自动完成Combobox的XComBo控件(VB.NET)
- Asp.Net使用Easy UI DataGrid 实现行过滤[行模糊查询数据]
- vb.NET中为组合框添加自动查询功能
- combobox,textbox 控件实现自动提示功能
- ext.net中ComboBox空间实现模糊查询
- winform实现combox控件自动匹配查找,模糊查询功能
- 实现VB.Net中的文本框TextBox的按行跳转功能
- 自动完成功能vb实现
- 使用FlexBox和Json实现类似ComboBox(类似Google的输入提示和自动)功能-基于JQuery-ASP.NET
- 使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(上)
- asp.net开发中防止textbox出现“自动完成”的功能
- asp.net vb中为组合框添加自动查询功能
- 文本框(Textbox)和下拉框(Combobox)自动联想功能的实现
- [VB.NET]求如何用VB.NET语言+ACCECC数据库实现一个对会员等级自动升级功能!
- 使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(上) 【转自http://dflying.cnblogs.com】
- C# Combobox控件实现模糊查询功能