Я работаю в C# с текстовым полем, который действует как вход для поиска записей в базе данных (Access SQL) по номеру id. Я хочу иметь возможность использовать AutoComplete в текстовом поле, но с некоторыми ограничениями.C# Текстовое поле Автозаполнение: ограничение до ~ 50 предложений
Большая проблема заключается в том, что количество идентификаторов в системе составляет порядка тысяч, поэтому вместо того, чтобы заполнять окно автозаполнения один раз со всеми из них, мне нужно отслеживать, что находится в текстовом поле, и показывать только предложения автозаполнения когда есть ~ 50 или меньше вариантов.
В настоящее время я делаю этот запрос на каждом KeyDown: SELECT COUNT (*) FROM Таблица WHERE ID LIKE 'TextBox.Text%'
Когда число меньше 50 я заполняю автозаполнения с результатами версия SELECT для указанного выше оператора. Это привело меня к нескольким проблемам, большинство из которых, похоже, являются причудами C#, которые я не понимаю.
1) Когда я очищаю или добавляю в AutoCompleteCustomSet в течение одного события KeyDown, фактическая нажатая клавиша не добавляется к строке (то есть нормальное поведение ввода текстового поля не происходит).
2) Я попытался отделить обновление AutoCompleteCustomeSet до другого события (KeyPress или KeyUp), но это либо привело к сбою, либо дисплей автозаполнения отображался только ненадолго, прежде чем скрываться.
Я чувствую, что эта проблема должна быть общей, и я просто иду по ней неправильно. Может ли кто-нибудь предложить какой-нибудь совет? Благодаря!
EDIT: это Windows Forms
edit2: Верхняя 50 выбрать не решает проблему, так как пользователь (и потенциально забоя и повторно типов) верх 50 будет меняться.
Это WinForms? WPF? ASP.NET? – LBushkin