目标
我想让我的ComboBox项目建议,并追加其项目时,其中包含的东西,而不仅仅是通过StartsWith函数。
我的ComboBox绑定到一个DataView,该DataView包含客户端[CompanyName],[Address],[City],并以长串连接。
我希望我的用户能够在城市类型,仍然找到与上述所有领域相匹配的记录。我知道这是可能的Infragistics,但我没有那个包。
检索词:“嘘……”
- Costco,123 1st Avenue,Sher布鲁克
- Provigo,344 Ball Street,谢尔布鲁克
这在VB.Net中可能吗?或者我应该搜索其他东西?
6条答案
按热度按时间hm2xizp91#
ComboBox
、TextBox
和我认为DropDownList
具有AutoComplete属性它说明了应使用哪种AutoCompleteMode以及如何设置AutoCompleteSource
hc2pp10m2#
你可以试试下面的几句话,对我很有效
h6my8fg23#
我做了一些研究,发现了以下问题:
Override Winforms ComboBox Autocomplete Suggest Rule
在这个问题中,他们提到了另一个问题:
C# AutoComplete
让我们引用这个问题的最佳答案
现有的自动完成功能仅支持按前缀搜索。似乎没有任何像样的方法来覆盖这种行为。
有些人通过覆盖
OnTextChanged
事件实现了自己的自动完成功能。这可能是你最好的选择例如,您可以在
TextBox
的正下方添加ListBox
,并将其默认可见性设置为false。然后,您可以使用TextBox
的OnTextChanged
事件和ListBox
的SelectedIndexChanged
事件来显示和选择项目。这似乎是一个很好的基本示例:
你可以做很多事情,而不需要太多的努力:向文本框追加文本、捕获其他键盘命令等。
ssm49v7z4#
改进了弯曲在他的回答中演示的技术,以便使该机制更优雅地处理某些角落情况:
dm7nw8vv5#
抱歉,我用C#给出了另一个答案,但我有一个基于xDisruptor代码的更好的答案。
使用kinda行为(装饰器)。
您不必子类化ComboBox并更改designed中的所有现有组合。
使用Datasource而不是Items集合时要小心,因为它会引发异常。
验证码:
用途:
提示:可以通过对ComboBox类进行扩展(如myCombo.ToAutoComplete())来进一步改进
qq24tv8q6#
我已经解决了:)
对不起,它也是C#,但我认为将其转换为VB.Net非常容易
您需要:
1.有一个普通的组合框(DropDownStyle = DropDown,AutoCompleteMode = None,AutoCompleteSource = None),让我们称之为:comboBox1
1.添加事件***SelectedIndexChanged***和***TextUpdate***
然后使用以下代码:
好吧,就是这样:)我希望我的方法很简单