私はしばらく探していましたが、答えを見つけることができないようです..
コンピューターに接続されたバーコード スキャナーがあり、キーボード ウェッジとして機能します。スキャナーは、StartOfTransmission および EndofTransmission 文字を送信するように設定されているため、間にあるすべてのキーを処理し、何らかのアクションを実行する必要があります。
私のアプリケーションのシェルには、次のコードがあります...
private void Window_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = BarcodeScanner.Instance.ProcessTextInput(this, e.Text, e.Device, e.Timestamp);
}
これは、メイン ウィンドウまたはスペースを処理しないコントロール (ラベルなど) にフォーカスがある場合にうまく機能します。
私が遭遇した問題は、バーコード (私が制御していない) にスペースが含まれていることです。キーボード フォーカスが Textbox または Button にある場合、スペースはそのコントロールに記録され (つまり、ボタンの場合はクリックが発生します)、Shell.xaml の PreviewTextInput を通過しません。
私は次のいずれかをしたいと思います
- フォーカスのあるコントロールではなく、これらの文字をシェルでプレビューする方法
- StartOfTransmission を取得したら、シェルにフォーカスを移動し、EndOfTransmission の後、フォーカスをコントロールに戻します。
- または、私が気付いていない他の方法