读书人

怎么设计ComboBox的过滤功能,直接能模

发布时间: 2014-01-01 18:12:08 作者: rapoo

如何设计ComboBox的过滤功能,直接能模糊查找
如何设计的过滤功能,直接能模糊查找

详细说就是直接在omboBox输入字符后,下拉框显示出来过滤后的结果
输入的字符可能是后面的几位,不是从头开始的

不知道这样说明白了没有
[解决办法]
以前用LookupEdit很强大,不过刚刚发现能找到的都是收费的,那就推荐你看看这个
http://www.cnblogs.com/zhaoblogs/archive/2011/12/07/2278938.html
[解决办法]
不要绑定datatable,绑定view。view是可以用过滤。

输入条件件,用view的过滤,下拉框就自动改变了。

记得在2头和空格里加上通配符。

比如:要查找: ab cd 就要加上通配符成为: %ab%cd%

然后用这个条件去删选view就可以了。

[解决办法]
去找别的控件实现Autocomplete吧。
[解决办法]
Private Sub ComboBox1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.DropDown
MsgBox("ComboBox1_DropDown")
ComboBox1_DropDownClosed(ComboBox1, e)
End Sub

Private Sub ComboBox1_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.DropDownClosed
MsgBox("ComboBox1_DropDownClosed")
End Sub
Private Sub (ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
MsgBox("ComboBox1_TextChanged")
ComboBox1_DropDown(ComboBox1, e)
End Sub


用timer 1秒加载一次,在 ComboBox1_TextChanged 中,查找combox1.items 里面 displaymember 值 与 combox.text 相近,丛新绑定
[解决办法]

引用:
Quote: 引用:

去找别的控件实现Autocomplete吧。


先谢谢了,这个是网页的吗,是不是也是从头开始查找的啊


Autocomplete全都可以让你自己定义查找算法。当用户输入2的时候,你可以告诉组件哪些包含2;当用户再输入1的时候,你可以告诉哪些包含21;当用户再输入7的时候,你可以告诉组件哪些包含217......

你自己定义一个回调而不像combobox那样死板,这就是autocomplete。在各种开发平台中,都会有它。而不需要combobox。
[解决办法]
供你参考:
 Private Sub getword()
ComboBox1.Items.Clear()
Using r As IO.StreamReader = New IO.StreamReader("word.txt", System.Text.Encoding.Default)
Dim line As String
line = r.ReadLine
Do While (Not line Is Nothing)
If line.Contains(ComboBox1.Text.Trim()) Then
ComboBox1.Items.Add(line)
End If
line = r.ReadLine
Loop
r.Dispose()
r.Close()
End Using

Private Sub ComboBox1_TextUpdate(sender As Object, e As System.EventArgs) Handles ComboBox1.TextUpdate
If ComboBox1.Text <> String.Empty Then
getword()
End If
End Sub

word.txt的内容:
11142011
11142172
11143221
11131421
11132223

End Sub

[解决办法]
你可以参考一下我的博客: http://blog.csdn.net/yenange/article/details/7858152
[解决办法]
我用C#写过一个,下拉后有输入框模糊查询(可模糊查询多列),数据显示在下拉的DataGridView里,可以显示多列。很灵活!

读书人网 >VB Dotnet

热点推荐