带有WPF应用程序的条码扫描器

时间:2016-07-04 23:25:53

标签: c# wpf barcode-scanner

我的条形码扫描仪(蓝牙)连接到我的电脑,用于扫描一些条形码。扫描仪的行为与键盘完全相同,并返回扫描的内容。在我的WPF应用程序中,我有一些文本框供用户手动输入产品编号,修订号,箱号和批号。

我希望用户能够改为扫描QR /条?代码,随时都包含所有信息。所以我有几个问题:

  1. 是否可以将焦点扫描到应用程序中的任何内容而不是像键盘一样将其写出来?例如,我现在突出显示一个随机文本框,但我去扫描一个代码 - 我不希望代码填写这个随机文本框 - 我希望所有扫描文本都变成一个变量。

  2. 如果无法执行步骤1。我目前设置的方式是您需要单击特定的文本框。 TextChanged将解析它并尝试找出需要去的地方。但是当每个角色添加到框中时它会触发。我每个代码大约有30个字符,所以这会大大减慢它的速度。我试着看看其他活动可能有什么用,但是我没有看到任何其他解决方案?我还有其他一些事件遗失了吗?

  3. 谢谢

1 个答案:

答案 0 :(得分:2)

  

我不希望条形码填充随机文本框 - 我希望所有扫描的QR /条形码都变成一个变量。

private string barCode = string.Empty; //TO DO use a StringBuilder instead
private void Window_Loaded(System.Object sender, System.Windows.RoutedEventArgs e)
{
    MainWindow.PreviewKeyDown += labelBarCode_PreviewKeyDown;
}

private void labelBarCode_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if ((44 == e.Key)) e.Handled = true;
    barCode += e.Key;
    //look for a terminator char (different barcode scanners output different 
    //control characters like tab and line feeds), a barcode char length and other criteria 
    //like human typing speed &/or a lookup to confirm the scanned input is a barcode, eg.
    if (barCode.Length == 7) {
       var foundItem = DoLookUp(barCode);
       barCode = string.Empty;
    }
}

查看更新,截至2019年3月: https://stackoverflow.com/a/55411255/495455