我想知道是否还有从当前控件更改焦点并将其移动到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()
,但没有运气。
有什么想法吗?
答案 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