2

いくつかのロジックを実行する必要がありますが、特定のテキストボックスからのみです。検索を試みると、テキストボックスではなくウィンドウ全体の KeyDown または PreviewKeyUp のイベントがないように見えます。したがって、XAMLにはこれがあります

PreviewKeyUp="keyPressLogic"

次に、次のようなメソッドを用意します。

   private void keyPressLogic(object sender, KeyEventArgs e)
    {
        if ((e.Key == Key.Down) && (check focus command ) )
        {
            //My logic
            return;
        }
    }

ご覧のとおり、チェック フォーカス コマンドがわかりません。したがって、テキストボックスのキーチェックが欠落しているか、フォーカスコマンドを見つける必要があります

ありがとう

4

2 に答える 2

3

押したテキストボックスを取得するには、次のことを行う必要があります。

TextBox textbox = (TextBox)sender;

そして、次のことができます:

 private void keyPressLogic(object sender, KeyEventArgs e)
 {
     if ((e.Key == Key.Down) && (textbox.IsFocused))
     {
         //My logic
         return;
     }
 }
于 2013-10-17T19:36:00.580 に答える
1

System.Windows.Controls.TextBox にはイベント caleed があります。ここで見つけることができます。追加したテキストボックスに対してのみ KeyDown イベントをトリガーします。

これを XAML に追加する方法は次のとおりです。

<TextBox x:Name="MyTextbox" KeyDown="MyTextbox_KeyDown" />

そして、これがあなたのイベントハンドラーがどのように見えるべきかです

private void MyTextbox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if(e.Key == Key.Down)
    {
         // Add your logic here
    }
}
于 2013-10-17T22:12:46.710 に答える