2014-09-19 2 views
0

Я делаю приложение для создания оконных окон. Одна из форм имеет текстовое поле и кнопку на нем. У меня есть база данных на сервере sql. В моей базе данных есть одна таблица (состоит из ProductID, productName, NoOfStock и Price).сканирование штрих-кода

ProductID являются все штрих-коды, которые принадлежащие реальных продуктов, таких как handcream, конфеты и т.д ..

Когда я получаю мои детали продукта с помощью штрих-кода от других элементов управления, таких как выпадающий список, не существует каких-либо проблем. BUT, ** Проблема или мой вопрос **, когда я сканирую свой штрих-код, я могу получить его прямо в своем текстовом поле. После штрих-кода я хочу увидеть имя продукта (ProductName) в ящике сообщений или на ярлыке, не нажимая ни одной кнопки или не вводить и т. Д.

Другими словами, я хочу, чтобы моя система работала как супермаркеты .. персонал не требует щелчка по чему-либо на мониторе, просто сканирует штрих-код и сразу получает данные. *

Я думаю, что это связано с событием, но какой?

+0

'TextBox.TextChanged' может быть тем, что вы ищете – DrCopyPaste

+0

FYI, название языка -« C# », а не« C Sharp ». Кроме того, я редактировал ваш заголовок.Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Как вы читаете штрих-код? С помощью автономного API или данных? –

ответ

0

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

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged(v=vs.110).aspx

+0

Я пробовал это, но это не сработало. Когда я просматриваю штрих-код, только 1-й номер записывается в текстовое поле, но не в остальные. Я думаю, причина в том, что, поскольку я использовал событие с измененным текстом, программа не ждет номер на штрих-коде. когда он получает 1-й разряд, он действует на него. – ozisak

+0

Вы должны использовать таймер (см. Http://msdn.microsoft.com/en-us/library/system.windows.forms.timer%28v=vs.110%29.aspx). Сканер штрих-кода не передает «целое» число одновременно, но один за другим. Например. вы сканируете штрих-код с номером 1234, сканер сначала перенесите номер 1, затем 2, затем 3 и так далее. Поэтому вам нужно подождать немного, пока не будет передано все число. Вы можете добиться этого с помощью таймера. – hash

+0

@ozisak, штрих-код является фиксированным номером цифры, правильно? Вы можете воздействовать на него только в том случае, если длина номера фактически равна полной длине штрих-кода. – cDima

0

В зависимости от марки и модели вашего сканера штрих-кодов, как правило, есть инструкция, которая имеет страницу штрих-кодов, используемых для обозначения кода терминатора, как показано here on this SuperUser question.

Что вам нужно сделать, это найти эту страницу и запрограммировать сканер штрих-кода на автоматический TAB или CR после того, как он выполнит ввод штрих-кода. Как только вы это сделаете, THEN вы можете использовать событие TextChanged, чтобы обнаружить, когда ваш код терминатора (TAB или CR) прошел, тогда вы можете справиться с этим!

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

+0

Да, это способ сделать это, но из вопроса OP по сравнению с массовым сканированием вещей в супермаркете, оставив текстовое поле вообще, может быть, слишком много времени. – DrCopyPaste

1

Мое первое предположение было также использовать TextBox.TextChanged -Event, но, читая ваши комментарии, которые не работают, теперь, когда я думаю об этом, это имеет смысл. Большинство сканеров «просто» работают как клавиатура с точки зрения компьютера, к которому они прикреплены (так что они посылают ключи один за другим ...). А также (как указывается icemanind) большинство сканеров штрих-кода (или могут быть) сконфигурированы для завершения их ввода некоторым предварительно сконфигурированным ключом (в большинстве случаев это Введите или Вкладка, но вы должны быть в состоянии легко это выяснить, глядя в ручной или просто глядя на то, что клавиши бывают при сканировании)

Так что вы должны сделать вместо этого, подписавшись на KeyPress-Event (я предполагаю, что KeyDown может также работать, но я бы сказал, маловероятно, что сканер отправит ключ завершения, а затем удержит его)

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

 Смежные вопросы

  • Нет связанных вопросов^_^