0

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

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

有人有好主意吗?

4

2 回答 2

3

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

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

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

但是,有一个警告:您可能根本不想禁用文本框。如果条码损坏,扫描仪无法读取怎么办?您总是希望用户能够手动输入条形码。下次您在商店检查收银机时,请注意总有一种方法可以手动输入条形码。

于 2014-01-28T15:45:38.130 回答
0

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

在这里查看详细答案。

在这里查看答案

在这里查看github 代码

于 2018-05-22T10:59:54.323 回答