我有一个Windows 8存储应用程序,其中包含许多文本框。当我按键盘上的Enter键时,我希望焦点移至下一个控件。
我怎样才能做到这一点?
谢谢
最佳答案
您可以在文本框上处理KeyDown/KeyUp事件(取决于您是想在按键开始还是结束时转到下一个)。
XAML示例:
<TextBox KeyUp="TextBox_KeyUp" />
背后的代码:
private void TextBox_KeyUp(object sender, KeyRoutedEventArgs e)
{
TextBox tbSender = (TextBox)sender;
if (e.Key == Windows.System.VirtualKey.Enter)
{
// Get the next TextBox and focus it.
DependencyObject nextSibling = GetNextSiblingInVisualTree(tbSender);
if (nextSibling is Control)
{
// Transfer "keyboard" focus to the target element.
((Control)nextSibling).Focus(FocusState.Keyboard);
}
}
}
完整的示例代码,包括GetNextSiblingInVisualTree()帮助方法的代码:
https://github.com/finnigantime/Samples/tree/master/examples/Win8Xaml/TextBox_EnterMovesFocusToNextControl
请注意,使用FocusState.Keyboard调用Focus()会在其控制模板(例如Button)中具有这种矩形的元素周围显示点聚焦矩形。使用FocusState.Pointer调用Focus()不会显示焦点矩形(您正在使用触摸/鼠标,因此您知道与之交互的元素)。