2
我想解决如何在AllowTab属性设置为false时将制表符插入到WPF RichTextBox中。当AllowTab设置为false时,将选项卡插入WPF RichTextBox
有没有一个快捷键允许这个?我宁愿不要求助于添加一个特殊的按钮到工具栏或告诉用户他们必须复制和粘贴一个...
我想解决如何在AllowTab属性设置为false时将制表符插入到WPF RichTextBox中。当AllowTab设置为false时,将选项卡插入WPF RichTextBox
有没有一个快捷键允许这个?我宁愿不要求助于添加一个特殊的按钮到工具栏或告诉用户他们必须复制和粘贴一个...
好吧,最好的我可以想出到目前为止是拦截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;
}
+1的答案,但是我不得不听PreviewKeyDown代替。 KeyDown事件在RichTextBox代码中的某处(我怀疑)被占用。因此,当我点击Tab(它与其他键一起广播时)从未广播过, – 2013-06-10 13:55:31