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

时间:2018-07-06 00:04:26

标签: c# xaml uwp

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

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

1 个答案:

答案 0 :(得分:0)

example on 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富文本框”,然后从那里得到启发。

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