通过键入选择组合框中的项目
Posted
技术标签:
【中文标题】通过键入选择组合框中的项目【英文标题】:Selecting an item in comboBox by typing 【发布时间】:2012-04-28 14:23:39 【问题描述】:我有一个包含数百个项目的组合框。用户必须能够在组合框中键入文本。当用户键入文本时,必须选择或列出以键入值开头的项目。用户必须能够连续打字。我的 ComboBox DropDownStyle 是 DropDownList
例如: 通过键入在组合框中选择名称时,它只允许一个字母。因此,如果我输入“A”,它将跳转到以“A”开头的第一个字母。当我连续键入时,组合框选定的项目会根据当前按键发生变化。如果我按“As”,组合框会查看以“s”开头的项目。
我正在使用 Win Forms。
提前谢谢..
【问题讨论】:
WPF?表格? ASP.NET ? 发布了类似的问题 [这里][1] [1]:***.com/questions/2257899/… 使 DropDownStyle 'DropDown' ...和 AutoCompletStyle 'Suggest' 【参考方案1】:comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
【讨论】:
您也可以使用这些自动完成选项通过DropDownStyle
或DropDownList
执行此操作 - 它只是不会显式地向用户显示他们迄今为止键入的键。但是,如果您想保持 ComboBox.Items
不可变,那就太好了。
应该先设置Source再设置Mode,否则会抛出NotSupportedException。然后完美运行
完美解决方案
这称为“增量组合框搜索”,仅供参考。
如果你使用DropDownList作为你的DropDownStyle,你需要相对较快的键入,以便后面的字母继续过滤。您不能输入第一个字母,查看并思考,然后输入第二个字母。组合框将第二个字母作为全新搜索的开始。【参考方案2】:
您必须连接到 TextChanged 事件。当文字 更改,过滤列表(使用 DataView)并获取第一个文本 结果,将组合框的文本设置为该文本。你必须有一个 当然检查你的处理程序,以确定是否处理 事件(当您更改文本时,将触发另一个 TextChanged 事件)。 当然,您还想突出显示他们输入的文本,并且 将插入符号放在适当的位置。
【讨论】:
你的方法太复杂了。以上是关于通过键入选择组合框中的项目的主要内容,如果未能解决你的问题,请参考以下文章
如何确定在 Access VBA 中键入组合框和从下拉列表中选择之间的区别?