当AllowTab设置为false时,将选项卡插入WPF RichTextBox

Ber*_*rmo 2 wpf richtextbox tabbing

我试图找出当AllowTab属性设置为false时如何将选项卡字符插入WPF RichTextBox.

是否有允许这样的快捷键?我宁愿不必在工具栏中添加一个特殊按钮或告诉用户他们必须复制并粘贴一个...

Ber*_*rmo 6

好吧,到目前为止我能想到的最好的是拦截后面代码中的keydown事件:

private void RichTextBox_KeyDown(object sender, KeyEventArgs e)
{
     if (e.Key != Key.Tab || 
         (Keyboard.Modifiers & ModifierKeys.Control) != ModifierKeys.Control)
                return;

     var richTextBox = sender as RichTextBox;
     if (richTextBox == null) return;

     if (richTextBox.Selection.Text != string.Empty)
        richTextBox.Selection.Text = string.Empty;

     var caretPosition = richTextBox.CaretPosition.GetPositionAtOffset(0,
                           LogicalDirection.Forward);

     richTextBox.CaretPosition.InsertTextInRun("\t");
     richTextBox.CaretPosition = caretPosition;
     e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)