Как обработать событие TextChanged только, когда пользователь прекращает вводить?

У меня есть a TextBox с a TextChanged событие обеспечено электричеством. В конце это делает запрос к базе данных SQL, таким образом, я хочу ограничить количество запросов.

Я только хочу сделать запрос, если пользователь не нажал, ключ говорят.. 300 миллисекунд или около этого. Если бы по некоторым причинам предыдущий запрос все еще выполняется, я должен был бы отменить это и затем выпустить новый запрос.

9
задан Alex Jolig 7 December 2015 в 09:23
поделиться

4 ответа

Создайте System.Windows.Forms.Timer и сбрасывайте его (например, останавливайте, а затем запускайте) после каждого нажатия клавиши. Если событие таймера срабатывает, отключите таймер.

8
ответ дан 4 December 2019 в 21:47
поделиться

Используйте Reactive Framework для запуска по последовательности событий. Я не уверен в точности , как это будет работать, но вы можете прочитать об этом здесь ( Reactive Extensions for .NET ) и посмотреть, удовлетворит ли это ваши потребности. Здесь тоже есть несколько примеров: Примеры . Пример «Регулирования» может быть тем, что вы ищете.

1
ответ дан 4 December 2019 в 21:47
поделиться

1) Создайте таймер.

2) Создайте обработчик для события Tick вашего таймера. На каждом тике проверяйте, прошло ли достаточно времени простоя, и если да, ОСТАНОВИТЕ таймер и выполните запрос.

3) Каждый раз, когда в этом текстовом поле происходит нажатие клавиши, ПЕРЕЗАПУСКАЙТЕ таймер.

0
ответ дан 4 December 2019 в 21:47
поделиться

Добавьте второй слушатель действий, который вызывается всякий раз, когда пользователь нажимает любую клавишу, и когда он вызывается, сохраняет текущее время в глобальной переменной. Затем, когда вызывается ваше событие TextChanged, оно проверяет разницу во времени между глобальной переменной и текущим временем.

Если разница меньше 300 миллисекунд, запустите таймер для выполнения запроса через 300 миллисекунд. Затем, если пользователь нажимает другую клавишу, он сначала сбрасывает таймер.

0
ответ дан 4 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: