通过键入选择组合框中的项目

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;

【讨论】:

您也可以使用这些自动完成选项通过DropDownStyleDropDownList 执行此操作 - 它只是不会显式地向用户显示他们迄今为止键入的键。但是,如果您想保持 ComboBox.Items 不可变,那就太好了。 应该先设置Source再设置Mode,否则会抛出NotSupportedException。然后完美运行 完美解决方案 这称为“增量组合框搜索”,仅供参考。 如果你使用DropDownList作为你的DropDownStyle,你需要相对较快的键入,以便后面的字母继续过滤。您不能输入第一个字母,查看并思考,然后输入第二个字母。组合框将第二个字母作为全新搜索的开始。【参考方案2】:

您必须连接到 TextChanged 事件。当文字 更改,过滤列表(使用 DataView)并获取第一个文本 结果,将组合框的文本设置为该文本。你必须有一个 当然检查你的处理程序,以确定是否处理 事件(当您更改文本时,将触发另一个 TextChanged 事件)。 当然,您还想突出显示他们输入的文本,并且 将插入符号放在适当的位置。

【讨论】:

你的方法太复杂了。

以上是关于通过键入选择组合框中的项目的主要内容,如果未能解决你的问题,请参考以下文章

如何确定在 Access VBA 中键入组合框和从下拉列表中选择之间的区别?

用于打开报告的组合框 - 无法选择组合框中的项目

动态填充和更新组合框中的项目

VBA 中的动态组合框项

如何在VBA中的用户窗体上使用组合框和文本框来搜索和查找活动Excel电子表格中的数据?

Csharp:根据组合框中的值加载选中的项目列表