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을 눌렀을 때 방송되지 않았기 때문에 (다른 키로 방송되었다) –