В настоящее время я использую текстовое поле для фильтрации некоторых записей. У меня есть обновление дисплея в текстовом поле TextChanged, поэтому пользователь не нажимает кнопку ввода или нажимает кнопку, чтобы начать фильтрацию. Я хочу использовать AutoCompleteStringCollection для запоминания записей, введенных в текстовое поле; однако, если я сохраняю каждую строку из текстового поля при запуске события TextChanged, тогда он сохранит все подстроки каждого члена фильтра.AutoCompleteStringCollection с событием TextChanged
Так, например, если я напечатал "тест" строка он будет отображать: "t"
"te"
"tes"
"test"
в качестве рекомендуемых строк. Я просто хочу, чтобы последняя строка была добавлена в AutoCompleteStringCollection.
Я подумал о двух разных методах, которые я мог бы реализовать.
1) Я мог бы создать Task
что ждет «х» количество времени после последнего события TextChanged, прежде чем он добавляет строку в AutoCompleteStringCollection. Если бы я это сделал, мне пришлось бы использовать cancelationToken для отмены задачи каждый раз при запуске события textChanged. Это немного сложнее, потому что я использую .NET 4.0.
2) Я мог бы также поиск через AutoCompleteStringCollection каждый раз, когда добавляется строка и Удалить все подстроки (которые начинаются в начале слова). Это может иметь неприятные последствия, если пользователь вводит более конкретный фильтр, но все же хочет сохранить более короткий.
Есть ли лучший способ сделать это? Какой метод вы бы порекомендовали?