M B*_*son 3 vb.net barcode-scanner winforms
我已经回顾了几十个选项/解决方案,我无法让它工作.
简单地说,我有一个VB.Net Winform,它有一个文本框,用户可以手动输入文本,或者他们可以使用USB连接的条形码扫描器(模拟键盘)来捕获UPC.
我想要做的是让条形码输入进入文本框,无论哪个控件具有当前焦点.
我已将表单的KeyPreview属性设置为True.
然后我在frmMain_Keypress事件中添加了一些代码,如下所示:
If Me.txtSearch.Focused = False Then
txtSearch.Focus()
End If
Run Code Online (Sandbox Code Playgroud)
非常简单......它有效......有点......
如果txtSearch已经具有焦点,则整个条形码/ UPC将进入文本框.
但是,如果另一个控件具有焦点,则条形码/ UPC的每个字符除了第一个字符都会输入到文本框中.它总是剥离第一个角色.
我在上面的代码中放置了一些调试语句,以查看是否正在读取初始字符并且正在读取它...只是没有发送到文本框.
我已经看到了许多其他非常复杂的条形码扫描解决方案,看起来我真的很接近一些非常简单的东西,但是,如果它剥离了主角,显然它将无法工作.
希望我错过了一些非常明显的东西.
将KeyPress事件中的代码更改为:
If Me.txtSearch.Focused = False Then
txtSearch.Focus()
txtSearch.Text = e.KeyChar.ToString
txtSearch.SelectionStart = txtSearch.Text.Length
e.Handled = True
End If
Run Code Online (Sandbox Code Playgroud)
这样你就可以捕获第一个进入的键.