首页 > 解决方案 > 如何设置我的 ComboBox 以允许用户输入前几个字符,然后按 ENTER 自动选择项目?

问题描述

我有一种感觉,这是一件我忽略的非常简单的事情。

我有两个组合框,允许用户搜索/选择他们想要查看的记录。一个填写客户名称,另一个填写客户编号,因此用户可以通过选择名称或编号来查找特定记录。

每个 ComboBox 都由从 SQL Server 数据库返回的数据表填充。

每个 ComboBox 都将 DropDownStyle 设置为 DropDown,AutoCompleteMode 设置为 SuggestAppend,AutoCompleteSource 设置为 ListItems。

用户可以通过单击 DropDown 箭头进行选择,然后单击他们曾经是的项目,或者他们可以通过键入开始,ComboBox 根据用户键入的字符缩小列表中的项目数量。

使用鼠标单击列表中他们想要的项目可以正常工作......它会触发一个例程以从数据库中检索所选项目。

但是,当用户键入所需的选择并按 ENTER 时,什么也没有发生。他们必须单击下拉箭头并单击项目,以便程序提取适当的记录。

当用户点击回车时,如何让 ComboBox 拉出适当的记录?

我正在使用 Visual Basic。

标签: vb.netcombobox

解决方案


从它的声音来看,您需要三个事件。

您需要使用计时器来了解用户何时停止输入。为此,您需要一个事件是当他们输入的那个字段的值发生变化时 ( <control's name>.TextChanged)。这将启动/重新启动计时器滴答声(以便用户在下一个事件触发之前有几秒钟的暂停时间)。

下一个事件将是该Tick计时器的事件。该事件将停止计时器,然后将焦点放在正确的字段上,这样当用户按 ENTER 时,他们不会在他们输入的字段中按 ENTER。您需要编写一个函数来查找组合框中的正确项目并调用它。

然后你会有第三个事件,要么KeyPressKeyDown要么KeyUp在 ComboBox 本身。如果用户出于任何原因持有 ENTER,我倾向于KeyUp避免出现问题。这就是选择该项目的原因。

作为最后的仅供参考,我假设您正在使用 Visual Studio 编写代码。如果不是,你应该,如果你是/曾经是,你可以在编辑器左上角的下拉列表中选择你想要使用的字段,然后在右上角的下拉列表中查看相关的事件 -向下。


推荐阅读