vb.net - 如何设置我的 ComboBox 以允许用户输入前几个字符,然后按 ENTER 自动选择项目?
问题描述
我有一种感觉,这是一件我忽略的非常简单的事情。
我有两个组合框,允许用户搜索/选择他们想要查看的记录。一个填写客户名称,另一个填写客户编号,因此用户可以通过选择名称或编号来查找特定记录。
每个 ComboBox 都由从 SQL Server 数据库返回的数据表填充。
每个 ComboBox 都将 DropDownStyle 设置为 DropDown,AutoCompleteMode 设置为 SuggestAppend,AutoCompleteSource 设置为 ListItems。
用户可以通过单击 DropDown 箭头进行选择,然后单击他们曾经是的项目,或者他们可以通过键入开始,ComboBox 根据用户键入的字符缩小列表中的项目数量。
使用鼠标单击列表中他们想要的项目可以正常工作......它会触发一个例程以从数据库中检索所选项目。
但是,当用户键入所需的选择并按 ENTER 时,什么也没有发生。他们必须单击下拉箭头并单击项目,以便程序提取适当的记录。
当用户点击回车时,如何让 ComboBox 拉出适当的记录?
我正在使用 Visual Basic。
解决方案
从它的声音来看,您需要三个事件。
您需要使用计时器来了解用户何时停止输入。为此,您需要一个事件是当他们输入的那个字段的值发生变化时 ( <control's name>.TextChanged
)。这将启动/重新启动计时器滴答声(以便用户在下一个事件触发之前有几秒钟的暂停时间)。
下一个事件将是该Tick
计时器的事件。该事件将停止计时器,然后将焦点放在正确的字段上,这样当用户按 ENTER 时,他们不会在他们输入的字段中按 ENTER。您需要编写一个函数来查找组合框中的正确项目并调用它。
然后你会有第三个事件,要么KeyPress
,KeyDown
要么KeyUp
在 ComboBox 本身。如果用户出于任何原因持有 ENTER,我倾向于KeyUp
避免出现问题。这就是选择该项目的原因。
作为最后的仅供参考,我假设您正在使用 Visual Studio 编写代码。如果不是,你应该,如果你是/曾经是,你可以在编辑器左上角的下拉列表中选择你想要使用的字段,然后在右上角的下拉列表中查看相关的事件 -向下。
推荐阅读
- javascript - 在 React.createElement 中将 `onSubmit` 作为道具传递
- python - 删除熊猫数据框中每一行的最后一个单词
- python - 框架浮雕
- python-3.x - 如何解决错误静态文件找不到django
- ios - 如何在 UI 表格视图后面放置黑色不透明背景?
- python - 使用python在嵌套列表中的字符之前添加字符串
- javascript - 将按钮添加到自动幻灯片
- excel - 使用 vba 从 XML 文件中提取数据到 MS excel
- asp.net - 为什么在 Asp.Net Core 中使用 Steeltoe.Discovery.Client 库会不断增加内存?
- wpf - 从 Winform 过渡到 WPF