自动将条形码扫描仪输入发送到文本框VB.Net / Winforms

时间:2013-11-09 02:09:33

标签: vb.net winforms barcode-scanner

我已经回顾了很多选项/解决方案,我无法让它发挥作用。

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

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

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

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

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

非常简单......它有效,有点......

如果txtSearch已经有焦点,整个条形码/ UPC都会进入文本框。

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

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

我已经看到了很多其他非常复杂的条形码扫描解决方案,看起来我真的非常接近一些非常简单的东西,但是,如果它剥离了主要角色,它显然不会起作用。

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

1 个答案:

答案 0 :(得分: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

这样你就可以捕获第一个进入的键。