2011-06-27 16 views
2

私はトグルボタンを備えたアプリケーションを持っています。トグルボタンを押すと、バーコードスキャナからのテキスト入力を待ち受けます。バーコードスキャナがアプリケーションにテキスト入力を送信し始めると、スペース文字を送信するとすぐに、キーボードフォーカスを持つトグルボタンが非選択になります。テキスト入力イベントを中断することなく、コントロールがキーボード入力に反応するのを防ぐにはどうすればよいですか?

PreviewTextInputイベントまたはTextInputイベントの発生を許可しながら、トグルボタンがキーボード入力の影響を受けないようにする方法を見つける必要があります。

トグルボタンでPreviewKeyDownイベントを処理すると、e.Handledプロパティをtrueに設定することでボタンがスペースバー入力を受け取らなくなる可能性がありますが、PreviewTextInputイベントとTextInputイベントが発生するのが停止します。

クリックした直後にトグルボタンからフォーカスを削除しようと考えましたが、それはあまりにも多くのハッキングのようです。私はまた、トグルボタンのサブクラス化を避けたいと思う。また、ボタンを無効にしてマウスクリックで再有効にすることも考えましたが、それは優雅な解決策ではありません。私は、スペースバーのキーをボタンプレスに関連付けるメカニズムがなければならないと思っています。もし、それらの関連付けを解除する方法が分かれば、私は実用的な解決方法がありますが、その仕組みはわかりません。

ご意見やご感想はありがとうございます。ありがとう!

+1

ボタンをFocusableにしないように設定するのは大丈夫ですか? – Coeffect

+0

ええ、それは実際に私が知る限り良い解決策です。これは、インタラクティブである間にボタンがキーボードコマンドを受け取るのを防ぎ、通常のようにTextInputイベントを受け取ることができます。ありがとう! –

+0

素晴らしいアイデアのようには聞こえません。ユーザーはマウスを使用せずにボタンをどのようにクリックしますか? –

答えて

1

Mannimarcoが示唆しているように、トグルボタンのFocusableプロパティをFalseに設定することをお勧めします。

0

ボタンをクリックすると、フォーカスをTextBoxコントロールにフォーカスして、テキストをキャプチャします。 コントロールの背景とフォントを同じ色にして、入力を非表示にします。

トグルボタンがアクティブな状態で、LostFocusイベントをキャッチし、e.Handled = false;を設定する必要があります。

+0

この提案をありがとう。テキスト入力をキャプチャするためにフォーカスを別のコントロールに移動しないようにしたいのですが、ウィンドウ内で入力をキャプチャできるはずです。 –

関連する問題