C# WPF应用中的条码扫描
我已经找了一段时间了,但似乎找不到答案 我有一个条形码扫描仪连接到我的电脑上,它就像一个键盘楔子。扫描仪设置为向我发送StartToTransmission和EndofTransmission字符,以便我知道如何处理其间的所有键并执行一些操作 在我的应用程序外壳中,我有以下代码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
private void Window_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = BarcodeScanner.Instance.ProcessTextInput(this, e.Text, e.Device, e.Timestamp);
}
如果我将注意力集中在主窗口或不处理空间(标签等)的控件上,这将非常有用
我遇到的问题是条形码(不受我控制)中有空格。如果键盘焦点位于文本框或按钮中,则空格会记录在该控件中(即,如果按钮会导致单击),而不会通过我的Shell.xaml中的PreviewtOutput
我想做下面的一件事
我发现了一些有用的东西。。但是我不喜欢它 在我的Shell.Xaml中,我添加了以下内容
<TextBlock x:Name="lblBarcodeFocus" Focusable="True" Width="0" Height="0" />
然后在我的处理代码中,如果我检测到一个“StartToTransmission”,我会将焦点设置到这个控件(记住焦点),然后在我完成处理后,我会将焦点设置回原始控件
必须有一种更“优雅”的方式来做这件事。。。但我可以继续讨论其他问题:-)我尝试了Keyboard.ClearFocus(),但随后它会同时停止读取字符。您使用条形码扫描仪的原因是什么?在使用这种类型的硬件时,我通常选择串行设备。然后,您可以简单地从串行端口读取数据,而不用担心焦点在哪里。这是一个USB扫描仪(Intermec)。这是我们客户拥有的扫描仪,因此我们正在使用它进行测试。