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 有一个事件发生。在这里你可以找到它。它只会为您添加它的文本框触发 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 回答