【问题标题】:Inserting a tab into a WPF RichTextBox when AllowTab is set to false当 AllowTab 设置为 false 时将选项卡插入 WPF RichTextBox
【发布时间】:2014-03-31 15:50:07
【问题描述】:

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

有没有快捷键可以做到这一点?我宁愿不必求助于在工具栏上添加一个特殊按钮或告诉用户他们必须复制并粘贴一个...

【问题讨论】:

    标签: wpf richtextbox tabbing


    【解决方案1】:

    好的,到目前为止我能想到的最好的方法是在后面的代码中拦截 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;
    }
    

    【讨论】:

    • +1 的答案,但我不得不听 PreviewKeyDown 代替。 KeyDown 事件在 RichTextBox 代码中的某处(我怀疑)被使用。因此,当我点击 Tab 时它从未广播过(虽然它是用其他键广播的)
    【解决方案2】:

    下面的代码对我有用。

      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;
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-25
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      相关资源
      最近更新 更多