Texbox输入,禁用键盘,保留条形码扫描仪

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

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

有人有个好主意吗?

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

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

  1. 使用非HID条形码扫描仪的条形码扫描仪。 例如:串行或类似的东西。
  2. 配置条形码扫描器以在条形码扫描的开始和结束时发送特殊字符。 (如果您拥有特定型号条形码扫描仪的手册,则可以执行此操作。)编写KeyPressed事件以侦听这些特殊字符,作为从条形码扫描仪获取数据的信号。 当它看到它们时,启用和禁用文本框。
  3. 使用Windows API调用直接与条形码扫描程序通信。 这需要了解条形码扫描器的VID和PID,以及一些API的详细知识,如GetRawInputDeviceInfo,GetRawInputData和RegisterRawInputDevices。 这非常强大,因为您可以从应用程序的任何位置接收条形码输入,但它非常复杂。

但是,有一点需要注意:您可能根本不想禁用文本框。 如果条形码损坏且扫描仪无法读取怎么办? 您始终希望用户能够手动输入条形码。 下次通过商店的收银机时,请注意总是有办法手动输入条形码。

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

点击这里查看详细答案。

点击这里查看答案

点击这里查看github代码