代码之家  ›  专栏  ›  技术社区  ›  Bermo

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

  •  2
  • Bermo  · 技术社区  · 15 年前

    我正在尝试解决如何在AllowTab属性设置为false时将制表符插入WPF RichTextBox。

    2 回复  |  直到 15 年前
        1
  •  6
  •   Bermo    15 年前

    好的,到目前为止,我能想到的最好办法是在代码隐藏中拦截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;
    }
    
        2
  •  0
  •   Ahmed Assaf    11 年前

    下面的代码适用于我。

      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;
    

    }