c# - 条形码扫描事件捕获文本

标签 c# winforms

我有一个 win forms 应用程序,我也在尝试添加条形码扫描。

该窗口有多个文本框供用户填写。当用户单击一个框并扫描条码时,它会进入选定的文本框。

即使突出显示不同的文本框,是否可以编写事件以在扫描时将文本放入特定的文本框?

如果是这样,我该怎么做。 谢谢

最佳答案

有不同类型的条码扫描仪:键盘楔形和串行条形码扫描仪。

Keyboard wedge 将发送“消息”,就好像它们是从键盘输入的一样。所以通常它们只在某种编辑框有焦点时出现。

要将扫描的数据放在没有焦点的文本框中,最好和最安全的方法是在单独的后台线程中捕获消息(这适用于 KB wedge 以及串行)。使用 KB wedge,您的线程必须检查(前缀)代码以查看它们是否来自条形码扫描仪 - 如果不是,则转发到正常的 Windows 消息处理。

一些条形码扫描器可能有可用的库,它们已经为您完成了。

另一方面,如果应用程序只有一个窗口,并且使用了 KB 楔形扫描器,则可以避免单独的线程,并且可以在该窗口内捕获消息、进行分析,如果检测到条形码,数据可以放在右边的文本框中。但我永远不会相信用户在扫描条形码时位于正确的文本框中 - 事实上,该文本框最好是只读的。

但是,一般来说,当应用程序有多个窗口时,后台线程可能是唯一的选择。一些例子:

  • 用户扫描文档(例如发票)上的条形码,该文档需要自动打开。线程可以捕获代码,并打开该文档。

  • 用户扫描 EAN 代码,并希望查看产品的详细信息。同上。

关于c# - 条形码扫描事件捕获文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34633077/

相关文章:

c# - .NET 4.5 的奇怪文本框问题 - 不允许 '.'

c# - 使用 linq 获取路径的所有父级

c# - 任务完成后更改文本框值

c# - 如何检测 PictureBox 上是否按下了鼠标按钮?

c# - 自定义,复杂的动态反射解决方案-C#

c# - 如何显示工具提示,显示 WinForms 中轨迹栏的值

c# - .NET 与 Mono WinForms - 呈现的实际窗体大小

c# - 我需要登录到特定的配置文件,而不是默认的 outlook,尽管提供了用户名和密码,但它仍然使用默认凭据登录

c# - 当前月份的文字而不是 int

c# - 从字面上绘制一切