我一直在寻找,但似乎无法找到答案..
我有一个条形码扫描仪连接到我的电脑,它充当键盘楔。扫描程序设置为向我发送StartOfTransmission和EndofTransmission字符,以便我知道处理中间的所有键并执行某些操作。
在我的应用程序的shell中,我有以下代码......
private void Window_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = BarcodeScanner.Instance.ProcessTextInput(this, e.Text, e.Device, e.Timestamp);
}
如果我专注于主窗口或不处理空格的控件(标签等),这很有用
我遇到的问题是条形码(不受我控制)中有空格。如果键盘焦点位于文本框或按钮中,则空格将记录在该控件中(即,如果按钮,则会导致单击)并且不会通过我的Shell.xaml中的PreviewTextInput
我想做以下其中一项
答案 0 :(得分:1)
我发现了一些有用的东西..但我不喜欢它。
在我的Shell.Xaml中,我添加了以下内容..
<TextBlock x:Name="lblBarcodeFocus" Focusable="True" Width="0" Height="0" />
然后在我的处理代码中,如果我检测到“StartOfTransmission”,我将焦点设置为此控件,(记住焦点是什么),然后在完成处理后,我将焦点设置回原始控件。
必须采用更“优雅”的方式来做到这一点......但我可以继续讨论其他问题: - )