Вставка вкладки в WPF RichTextBox, когда для AllowTab установлено значение false

Я пытаюсь понять, как вставить символ табуляции в WPF RichTextBox, когда для атрибута AllowTab установлено значение false.

Есть ли сочетание клавиш, которое позволяет это? Я бы предпочел не прибегать к добавлению специальной кнопки на панель инструментов или сообщать пользователям, что они должны скопировать и вставить одну в...

2 ответа

Решение

Хорошо, лучшее, что я могу придумать, это перехват события 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;
}

Ниже код работает для меня.

  private void RichTextBox_PreviewKeyDown(object sender, KeyEventArgs e)
    {
         if (e.Key != Key.Tab)      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("        ");
 richTextBox.CaretPosition = caretPosition;
 e.Handled = true;

}

Другие вопросы по тегам