C# 文本框自动完成 : Limit to ~50 suggestions

标签 c# winforms autocomplete

我在 C# 中使用一个文本框作为数据库 (Access SQL) 记录查找输入的 ID 号。我希望能够在文本框上使用自动完成功能,但有一些限制。

最大的问题是系统中的 ID 数量大约为数千,因此我不需要将所有 ID 填入自动完成框,而是需要监视文本框中的内容,并且只在出现时显示自动完成建议大约有 50 个或更少的选择。

目前,我正在对每个 KeyDown 执行此查询:SELECT count(*) FROM Table WHERE id LIKE 'textbox.text%'

当计数小于 50 时,我用上述语句的 SELECT id 版本的结果填充自动完成。这导致我遇到了几个问题,大多数似乎是我不理解的 C# 怪癖。

1) 当我在单个 KeyDown 事件中清除或添加到 AutoCompleteCustomSet 时,实际按下的键不会添加到字符串中(即不会发生正常的文本框输入行为)。

2) 我尝试将 AutoCompleteCustomeSet 更新分离到不同的事件(KeyPress 或 KeyUp),但这要么导致崩溃,要么自动完成显示在被隐藏之前只会短暂显示。

我觉得这个问题一定很普遍,我只是以错误的方式解决了这个问题。谁能提供一些建议?谢谢!

编辑:这是 Windows 窗体

EDIT2:前 50 名的选择并不能解决随着用户键入(并可能退格并重新键入)前 50 名会发生变化的问题。

最佳答案

您是否尝试过 TextChanged 事件? 我希望在更新文本框后触发该事件,从而避免您提到的怪癖。

关于C# 文本框自动完成 : Limit to ~50 suggestions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2179542/

相关文章:

c# - WCF 主机中的触发事件

C# .NET 3.5 图形用户界面设计

c# - 在 Visual Studio Code 中使用命令行提示运行 C# 程序

c# - 在单个 datagridview 中显示相关表中的数据

.NET Framework 4.0 和使用 2.0 的程序集

javascript - 谷歌浏览器自动填充不适用于所有机器

java - 使用 Hibernate Search 自动完成

c# - 检查列表是否包含多个指定值

c# - 如何在for循环中每次更新标签

android - 自动完成下拉列表不会显示