文本框输入,禁用键盘,保留条形码扫描仪

时间:2014-01-28 15:32:33

标签: c# keypress barcode-scanner windows-forms-designer disabled-input

我制作了一个带有文本框的Windows窗体应用程序。我将强制用户使用条形码扫描仪,因此应禁用键盘输入。 KeyPressed事件不起作用,因为条形码扫描器也禁用了输入。

我想也许我可以在TextChanged事件上设置一个计时器,但我真的不知道它是如何工作的。

有人有个好主意吗?

2 个答案:

答案 0 :(得分:3)

根据您的描述,我假设您的条形码扫描仪是HID条形码扫描仪。如果是这样,这里没有简单的答案,因为条形码扫描仪的功能与键盘完全相同。禁用键盘输入将禁用条形码扫描仪。

我以前做过这个,我知道有几个解决方案:

  1. 使用非HID条形码扫描仪的条形码扫描仪。例如:串行或类似的东西。
  2. 将条形码扫描器配置为在条形码扫描的开始和结束时发送特殊字符。 (如果您拥有特定型号条形码扫描仪的手册,则可以执行此操作。)编写KeyPressed事件以侦听这些特殊字符,作为从条形码扫描仪获取数据的信号。当它们看到它们时,启用和禁用文本框。
  3. 使用Windows API调用直接与条形码扫描程序通信。这需要了解条形码扫描器的VID和PID,以及一些API的详细知识,如GetRawInputDeviceInfo,GetRawInputData和RegisterRawInputDevices。这非常强大,因为您可以从应用程序的任何位置接收条形码输入,但它非常复杂。
  4. 但是,有一点需要注意:您可能根本不想禁用文本框。如果条形码损坏且扫描仪无法读取怎么办?您始终希望用户能够手动输入条形码。下次您在商店查看收银机时,请注意始终有办法手动输入条形码。

答案 1 :(得分:0)

您可以找到使用keysUp和Keysdown事件进行检查的方法。

检查here以获取详细答案。

检查here以获取答案

检查here是否有github代码