Основываясь на вашем описании, я предполагаю, что ваш сканер штрих-кода является сканером штрихового кода HID. Если это так, здесь нет простого ответа, потому что сканер штрих-кода работает точно так же, как клавиатура. Отключение ввода с клавиатуры приведет к отключению сканера штрих-кода.
Я делал это раньше, и есть несколько решений, я знаю:
- Использование сканера штрих-кода, который не является HID сканер штрих-кодов. Пример: Серийный, или что-то в этом роде.
- Настройте сканер штрих-кода для отправки специального символа в начале и в конце сканирования штрих-кода. (Это то, что вы можете сделать, если у вас есть руководство для конкретной модели сканера штрих-кода.) Напишите свое событие KeyPressed для прослушивания этих специальных символов в качестве сигнала о том, что он получает данные из сканера штрих-кода. Когда он их видит, включите и отключите текстовое поле.
- Используйте вызовы Windows API для непосредственного общения со сканером штрих-кода. Это требует знания VID и PID сканера штрих-кода и некоторых подробных знаний об API, таких как GetRawInputDeviceInfo, GetRawInputData и RegisterRawInputDevices. Это очень мощно, поскольку вы можете получать ввод штрих-кода из любого места приложения, но он очень сложный.
Однако одно предостережение: вы, вероятно, не хотите вообще отключать текстовое поле. Что делать, если штрих-код поврежден и сканер не может его прочитать? Вы всегда хотите, чтобы пользователь мог вручную ввести штрих-код. В следующий раз, когда вы пройдете через кассовый аппарат в магазине, обратите внимание, что всегда есть способ вручную ввести штрих-код.
Вы должны просто установить для свойства enabled текстового поля значение false, а затем использовать любой API, который у вас есть, от сканера штрих-кода, чтобы подключиться к событию сканирования и установить значение текстового поля для результата сканирования. –
Надеюсь, что это поможет http://nicholas.piasecki.name/blog/2009/02/distinguishing-barcode-scanners-from-the-keyboard-in-winforms/ – Steve