【问题标题】:Automatically send barcode scanner input to textbox VB.Net / Winforms自动将条形码扫描仪输入发送到文本框 VB.Net / Winforms
【发布时间】:2013-11-09 02:09:32
【问题描述】:

我已经查看了许多关于此的选项/解决方案,但我无法让它发挥作用。

简单地说,我有一个 VB.Net Winform,它有一个文本框,用户可以在其中手动输入文本,或者他们可以使用 USB 连接的条形码扫描仪(模拟键盘)来捕获 UPC。

我要做的是让条形码输入进入文本框,无论哪个控件具有当前焦点。

我已将表单的 KeyPreview 属性设置为 True。

然后我在 frmMain_Keypress 事件中添加了一些代码,如下所示:

    If Me.txtSearch.Focused = False Then
        txtSearch.Focus()
    End If

非常简单......而且它确实有效,有点......

如果 txtSearch 已经获得焦点,则整个条形码/UPC 都会输入到文本框中。

但是,如果另一个控件具有焦点,则条形码/UPC 除了第一个字符的每个字符都会输入到文本框中。它总是去掉第一个字符。

我在上面的代码中放置了一些调试语句,以查看初始字符是否正在被读取并且正在被读取...只是没有发送到文本框。

我已经看到了很多其他非常复杂的条码扫描解决方案,似乎我对一些非常简单的东西非常接近,但是,如果它去掉了主角,显然它就行不通了。

希望我遗漏了一些非常明显的东西。

【问题讨论】:

  • 或许可以将阅读器配置为发送前导和最后一个字符。
  • 或许您可以使用Raw Input 来检测按键是来自键盘还是条形码扫描仪。如果您检测到条形码扫描仪上的输入,请立即将焦点设置在txtSearch
  • 您可以简单地从该代码中将密钥添加到您的文本框并标记事件已处理吗?

标签: vb.net winforms barcode-scanner


【解决方案1】:

将 KeyPress 事件中的代码更改为:

    If Me.txtSearch.Focused = False Then
        txtSearch.Focus()
        txtSearch.Text = e.KeyChar.ToString
        txtSearch.SelectionStart = txtSearch.Text.Length
        e.Handled = True
    End If

这样你就可以捕捉到第一个进来的键。

【讨论】:

  • 效果很好!感谢 endofzero!
  • 如果我使用用户控件呢?我无法将用户控件的属性KeyPreview 设置为True
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多