【问题标题】:Is it possible to re-program the tab key's functionality when using a TextBox in UWP apps?在 UWP 应用程序中使用 TextBox 时是否可以重新编程 Tab 键的功能?
【发布时间】:2018-07-06 15:31:45
【问题描述】:

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

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

【问题讨论】:

  • KeyDownPreviewKeyDown事件要你处理。

标签: c# xaml uwp


【解决方案1】:

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 富文本框”并从中获得灵感。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多