如何在WPF中转移焦点?

时间:2013-03-23 14:02:42

标签: c# wpf focus

我想知道是否还有从当前控件更改焦点并将其移动到TabIndex指定控件上的WPF中的其他控件。

实施例 我有TabIndex 1到5的控件,有没有办法将焦点从1到5?

<TextBox TabIndex="1" Focusable = "true" LostFocus="test_LostFocus"/>
<TextBox TabIndex="2" Focusable = "true"/>
...
<TextBox TabIndex="5" Focusable = "true" name="LastControl"/>

private void test_LostFocus(object sender, RoutedEventArgs e)
{
  LastControl.Focus();
}

我尝试了Keyboard.Focus()FocusManager.SetFocusedElement(),但没有运气。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

正如评论中所述,KeyDown是一种更好的方法(lostfocus会导致奇怪的行为,例如用户专门点击第二个控件而焦点转到最后一个控件)... < / p>

确保将e.Handled设置为true尽管..!

这将有效:

private void TextBox1_KeyDown(object sender, KeyEventArgs e)
{
        if (e.Key == Key.Tab)
        {
            e.Handled = true;
            LastControl.Focus();
        }
 }

文本框的减速度应该是这样的:

<TextBox TabIndex="1" Focusable = "true" KeyDown="TextBox1_KeyDown"/>

答案 1 :(得分:1)

只需处理文本框的KeyDown事件并在那里设置焦点。由于您使用的是Tab,请让控件知道您将通过设置e.Handled = true来处理它,这将停止默认tab跳转到控件的行为{{1} }}

TabIndex