C# WPF应用中的条码扫描

C# WPF应用中的条码扫描,c#,wpf,barcode,barcode-scanner,C#,Wpf,Barcode,Barcode Scanner,我已经找了一段时间了,但似乎找不到答案 我有一个条形码扫描仪连接到我的电脑上,它就像一个键盘楔子。扫描仪设置为向我发送StartToTransmission和EndofTransmission字符,以便我知道如何处理其间的所有键并执行一些操作 在我的应用程序外壳中,我有以下代码 private void Window_PreviewTextInput(object sender, TextCompositionEventArgs e) { e.Handled = BarcodeScann

我已经找了一段时间了,但似乎找不到答案

我有一个条形码扫描仪连接到我的电脑上,它就像一个键盘楔子。扫描仪设置为向我发送StartToTransmission和EndofTransmission字符,以便我知道如何处理其间的所有键并执行一些操作

在我的应用程序外壳中,我有以下代码

private void Window_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    e.Handled = BarcodeScanner.Instance.ProcessTextInput(this, e.Text, e.Device, e.Timestamp);
}
如果我将注意力集中在主窗口或不处理空间(标签等)的控件上,这将非常有用

我遇到的问题是条形码(不受我控制)中有空格。如果键盘焦点位于文本框或按钮中,则空格会记录在该控件中(即,如果按钮会导致单击),而不会通过我的Shell.xaml中的PreviewtOutput

我想做下面的一件事

  • 如何使Shell预览这些字符而不是具有焦点的控件
  • 一旦我开始传输,将焦点移到我的外壳上,然后在结束传输后,将焦点设置回控件
  • 或者其他我不知道的方式

  • 我发现了一些有用的东西。。但是我不喜欢它

    在我的Shell.Xaml中,我添加了以下内容

    <TextBlock x:Name="lblBarcodeFocus" Focusable="True" Width="0" Height="0" />
    
    
    
    然后在我的处理代码中,如果我检测到一个“StartToTransmission”,我会将焦点设置到这个控件(记住焦点),然后在我完成处理后,我会将焦点设置回原始控件


    必须有一种更“优雅”的方式来做这件事。。。但我可以继续讨论其他问题:-)

    我尝试了Keyboard.ClearFocus(),但随后它会同时停止读取字符。您使用条形码扫描仪的原因是什么?在使用这种类型的硬件时,我通常选择串行设备。然后,您可以简单地从串行端口读取数据,而不用担心焦点在哪里。这是一个USB扫描仪(Intermec)。这是我们客户拥有的扫描仪,因此我们正在使用它进行测试。