3

我已经审查了数十个选项/解决方案,但我无法让它发挥作用。

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

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

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

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

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

非常简单……它确实有效,有点……

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

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

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

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

希望我错过了一些非常明显的东西。

4

1 回答 1

6

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

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

这样你就可以捕获进来的第一个密钥。

于 2013-11-09T02:33:36.103 回答