【发布时间】:2011-01-11 21:07:52
【问题描述】:
我在 C# 中使用一个文本框作为数据库 (Access SQL) 记录的输入,按 ID 号查找。我希望能够在文本框上使用 AutoComplete,但有一些限制。
最大的问题是系统中的 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 名会发生变化的问题。
【问题讨论】:
-
这是 WinForms 吗? WPF? ASP.NET?
标签: c# winforms autocomplete