2012-02-02 19 views
3

私はすべてのトンネリングイベントとバブリングイベントでWPFを使用しています。
私はいつも自分自身に質問すると、[PreviewKeyUpとKeyUp]または[PreviewKeyDownとKeydown]を使用するかどうかです。WPFでキーボードイベントをどのように処理する必要がありますか?それはKeyUpかKeyDownか?

キープレスに反応するためにはどのような組み合わせを使用する必要がありますか?

+0

それはあなたが連鎖したい場所に依存します。 KeyDownはKeyUpsの前に処理されます。したがって、イベントに到達する前に停止してKeyDownを処理したい場合は、 MSDNでイベントバブルとルーティングイベントを探します。 – Paparazzi

答えて

4

あなたが何をしたいかによって異なります。

  1. PreviewKeyDown =キーが押さ
    例になる前に:あなたはテキストボックスにイベントがある場合は押された現在のキーはTextBox.Text
  2. に追加されません
  3. PreviewKeyUp =キーを手放すされる前に、
  4. のKeyDown =キーは
    例を押した後:あなたが押された現在のキーがTextBox.Text
  5. に追加されたテキストボックスにイベントがある場合キーAFTER
  6. keyUpイベント=だから、再び、それはあなたが何をしたいかによって異なり

を手放すです。 TextBox検証を追加する場合は、PreviewKeyDownを使用して、テキストが正しくない場合は無視します。

あなたがSPACEの手を離したときに何かしたいのであれば、私たちKeyUp

0

すべての状況によって異なります。たとえば、リスト内の項目を選択すると、キーを保持して選択項目を変更できるようになります。

複数の視覚状態を持つ要素がある場合(例:ボタンを押すと、KeyDownが視覚的な状態を変更することがあります。その後、KeyUpはビジュアルを元の状態に戻してコマンドを実行します。

あなたの状況では、イベントを発生させたいときにはすべて依存しますが、どちらか一方が異なる用途のためにどちらかが他のものより優れているとは言いません。