2011-01-27 12 views
1

私はWPFにKeyDownイベントハンドラを添付したウィンドウを持っています。例えばKeyDown Routed Eventがすでに処理されていない場合の処理​​方法。 TextBox

ユーザーが数字キー(0-9)を押すと、イベントに応答します。私はラジオボタンを選択するためにショートカットキーとして0-9を使用します。例えば。キー3を押すと3番目のラジオボタンが選択されます。

問題は、ユーザーがテキストボックス内の数値キーを押すと、キーパッドをショートカットとして処理したくないということです。なぜなら、TextBoxのデフォルトの実装を維持したいからです。

今のところ、TextBox内でユーザーが3を押すと、TextBoxのテキストは3に設定されますが、3'rdラジオボタンも選択されます。

ユーザーがTextBox内でキーを押したときにTextBoxがe.Handledをtrueに設定すると考えましたが、そうではありません。

また、TextBoxも単なる例です。ユーザーが階層内の他の入力コントロールに何かを入力すると、私はKeyDownイベントに応答したくありません。

私は、これを解決するためにルーティングされたイベントをよりよく理解する必要があると思います。

+0

ユーザーに頭を悩ますような音がします。アプリケーションはユーザーフレンドリーである必要があります。これは、基礎となるコードの動作と同じくらい重要です。私はユーザーの混乱を恐れる。数値の代わりにFボタンをマッピングするほうがよいでしょうか? (私はあなたが理由を知っているかもしれないと気づいて、ただ質問する) –

+0

私はもっと自分自身に同意できませんでした。しかし、ユーザーは以前のソフトウェアのショートカットに慣れているので、それは必要です –

答えて

0

RoutedEventArgs(あなたの場合はKeyPressEventArgs)のプロパティを確認できます。 TextBoxの場合は、処理しないでください。そうでない場合は、RadioButton選択ロジックを実行してください。

+0

これは私の最初の考えでしたが、よりよい方法が必要です...いいえ? その場合、私は扱いたくない可能性のあるコントロールについて考えなければならないでしょう。エラーが発生しやすいです。 –

0

フォームを使用してみてください。 KeyPreviewプロパティを使用し、ActiveControlプロパティを使用してロジックをトリガーします。

+0

これは上記と同じ問題です。私は、私が扱いたくないすべてのコントロールについて考える必要があります。しかしそれはそれが唯一の方法かもしれないようです。 –

関連する問題