我有一个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()不会显示焦点矩形(您正在使用触摸/鼠标,因此您知道与之交互的元素)。

10-06 06:11