2

AllowTab 属性が false に設定されている場合に、タブ文字を WPF RichTextBox に挿入する方法を見つけようとしています。

これを可能にするショートカットキーはありますか?ツールバーに特別なボタンを追加したり、コピーして貼り付ける必要があることをユーザーに伝えたりする必要はありません...

4

2 に答える 2

6

さて、これまでに思いついた最善の方法は、コードビハインドでキーダウンイベントをインターセプトすることです。

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;
}
于 2009-11-05T11:38:42.820 に答える
0

以下のコードは私にとってはうまくいきます。

  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;

}

于 2014-03-31T07:50:07.200 に答える