Вы не знаете, что пользователь хочет вставить в текстовое поле, поэтому это может быть Cat, Contact, Com, Computer, ... Таким образом, вы должны ограничить список поиска каждым ключевым словом пользователя, также вы можете установить политику например, просто искать, когда длина ввода не менее 3.
Редактировать: Другой способ - использовать шаблон Lazy, то есть сохранить последнее изменение текста, а затем в другом потоке (например, по таймеру) проверить, не прошло ли более 2 секунд между последним изменением пользователя на Текущее время, обновите ваш поиск: (интервал таймера 2 секунды).
private DateTime lastChange = DateTime.Now;
private bool textChanged = false;
object lockObject = new object();
private void textChanged(object sender, EventArg e)
{
lock(lockObject)
{
lastChange = DateTime.Now;
textChanged = true;
}
}
private void timer1_Tick(object sender, EventArgs е)
{
lock(lockObject)
{
if (textChanged && lastChange > DateTime.Now.AddSeconds(-2)) // wait 2 second for changes
{
UpdateList(); // or the method for searching.
textChanged = false;
lastChange = DateTime.Now;
}
}
}