我想知道是否有办法将焦点从当前控件移至 WPF 中 TabIndex 分配的控件上的其他控件。
例子
我有 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()
and FocusManager.SetFocusedElement()
但没有运气。
任何想法?
正如评论中所说,KeyDown
是一种更好的方法(失去焦点会导致奇怪的行为,例如用户专门单击第二个控件,焦点转到最后一个控件)...
确保您设置了e.Handled
虽然是真的..!
这会起作用:
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"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)