我制作了一个带有文本框的 Windows 窗体应用程序。我将强制用户使用条形码扫描仪,因此应该禁用键盘输入。 KeyPressed 事件不起作用,因为也禁用了来自条形码扫描仪的输入。
我想也许我可以在 TextChanged 事件上设置一个计时器,但我真的不知道它是如何工作的。
有人有好主意吗?
根据您的描述,我假设您的条码扫描器是 HID 条码扫描器。如果是这样,这里就没有简单的答案,因为条形码扫描仪的功能与键盘完全相同。禁用键盘输入将禁用条形码扫描仪。
我以前曾经这样做过,我知道有一些解决方案:
- 使用非 HID 条形码扫描仪的条形码扫描仪。例如:连续剧或类似的东西。
- 配置条形码扫描仪以在条形码扫描的开始和结束时发送特殊字符。 (如果您有特定型号的条形码扫描仪的手册,则可以执行此操作。)编写 KeyPressed 事件以侦听这些特殊字符,作为它正在从条形码扫描仪获取数据的信号。当它看到它们时,启用和禁用文本框。
- 使用 Windows API 调用直接与条形码扫描仪通信。这需要了解条码扫描仪的 VID 和 PID,以及 GetRawInputDeviceInfo、GetRawInputData 和 RegisterRawInputDevices 等 API 的一些详细知识。这是非常强大的,因为您可以从应用程序中的任何位置接收条形码输入,但它非常复杂。
但是,有一点需要注意:您可能根本不想禁用该文本框。如果条码损坏,扫描仪无法读取怎么办?您总是希望用户能够手动输入条形码。下次您在商店收银时,请注意总有一种方法可以手动输入条形码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)