Делать именно то, что вы просили, очень легко. Просто добавьте событие TextChanged
в текстовое поле и выполните поиск в любое время, когда оно изменилось.
private void textHost_TextChanged(object sender, EventArgs e)
{
// Do search and update the results
}
Однако вы должны учитывать, что если ваш поиск для получения результатов занимает больше тривиального промежутка времени, пользователь будет раздражен, если его задержка с каждым набранным символом. Для этого вы должны использовать BackgroundWorker
и выполнять поиск в фоновом потоке. Когда нажата новая клавиша, вызовите метод Cancel
в потоке и запустите новую.
Если вы хотите сделать еще более сложным, вы можете настроить фоновый поток, который сигнализируется при каждом нажатии клавиши. Если в течение полсекунды или около того новый сигнал не получен, вы начинаете поиск в фоновом режиме.