sameralkhalili Ответов: 1

Подождите, пока текстовое поле закончит ввод со сканера штрих-кодов ? приложение Windows


привет
в моем приложении windows c# у меня есть текстовое поле с именем txtItemID
я считываю идентификатор со сканера штрих-кодов прямо в свое текстовое поле
и я проверяю входные значения из элементов в базе данных
моя проблема заключается в том, как можно прочитать входное значение из текстового поля, когда сканер закончит чтение ?

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

пожалуйста, есть идеи ?

Что я уже пробовал:

я пытаюсь использовать изменение текстового поля
private void txtItemID_TextChanged(object sender, EventArgs e)
       {
           // select from database every time character input in textbox ;

       }



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

1 Ответов

Рейтинг:
1

Sascha Lefèvre

Несколько способов:

- Если ваши штрих-коды всегда имеют одинаковую длину, подождите, пока текст в текстовом поле не будет иметь правильную длину.

- Настройте свой сканер на отправку специального суффикса, который позволит вам идентифицировать конец кода.

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

- Не используйте текстовое поле вообще, но считывайте передачу сканера штрих - кодов непосредственно на более низком уровне API-что я бы и сделал. Видеть здесь: Использование необработанного ввода из C# для работы с несколькими клавиатурами[^] (Типичный сканер штрих-кода-это в основном клавиатура с точки зрения системы.)