我有一个 win forms 应用程序,我也在尝试添加条形码扫描。
该窗口有多个文本框供用户填写。当用户单击一个框并扫描条码时,它会进入选定的文本框。
即使突出显示不同的文本框,是否可以编写事件以在扫描时将文本放入特定的文本框?
如果是这样,我该怎么做。 谢谢
最佳答案
有不同类型的条码扫描仪:键盘楔形和串行条形码扫描仪。
Keyboard wedge 将发送“消息”,就好像它们是从键盘输入的一样。所以通常它们只在某种编辑框有焦点时出现。
要将扫描的数据放在没有焦点的文本框中,最好和最安全的方法是在单独的后台线程中捕获消息(这适用于 KB wedge 以及串行)。使用 KB wedge,您的线程必须检查(前缀)代码以查看它们是否来自条形码扫描仪 - 如果不是,则转发到正常的 Windows 消息处理。
一些条形码扫描器可能有可用的库,它们已经为您完成了。
另一方面,如果应用程序只有一个窗口,并且使用了 KB 楔形扫描器,则可以避免单独的线程,并且可以在该窗口内捕获消息、进行分析,如果检测到条形码,数据可以放在右边的文本框中。但我永远不会相信用户在扫描条形码时位于正确的文本框中 - 事实上,该文本框最好是只读的。
但是,一般来说,当应用程序有多个窗口时,后台线程可能是唯一的选择。一些例子:
用户扫描文档(例如发票)上的条形码,该文档需要自动打开。线程可以捕获代码,并打开该文档。
用户扫描 EAN 代码,并希望查看产品的详细信息。同上。
关于c# - 条形码扫描事件捕获文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34633077/