在 UWP 应用中使用 TextBox 时,是否可以重新编程 Tab 键的功能?



在UWP 应用中使用 TextBox 时,是否可以重新编程 Tab 键的功能?如果您使用 OneNote 的 UWP 版本,您会看到它可能...好吧,我不能肯定地说,因为编写该应用程序的是Microsoft自己,所以也许他们只是给了自己覆盖它的能力?

但我的目标只是在我的 TextBox 或 RichEditBox 具有焦点时对密钥进行编程。我想让用户能够简单地按 Tab 键并缩进文本或项目符号点,而不必另外按住控制键。但就目前情况而言,默认情况下,当您按 Tab 键时,编辑器会失去焦点,下一个 UI 元素会获得焦点。烦人。-_- 但是谢谢。

msdn 上有一些解决方法的示例。但是,没有更多的CaretIndex属性,因此您需要使用SelectionStart

private void UIElement_OnPreviewKeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.OriginalKey == VirtualKey.Tab)
{
var txtBox = (TextBox)sender;
//No CaretIndex property anymore, you need to use SelectionStart
var caretPos = txtBox.SelectionStart;
txtBox.Text = txtBox.Text.Insert(caretPos, "    ");
txtBox.SelectionStart = caretPos + 4;
//Remember to set Handled to avoid OS handle Tab key
e.Handled = true;
}
}

这是一种解决方法,因此我建议您尝试找到一些开源的"uwp 富文本框"并从那里获得想法。

无论如何,上面的解决方案非常快速且易于实现。

最新更新