C#:向光标所在的位置添加文本

时间:2010-08-23 14:27:56

标签: c# wpf

我想以这样一种方式处理tab按键

如果没有选定文本,请在光标位置添加4个空格。如果有选定的文本,我想在每个选定的行的开头添加4个空格。喜欢视觉工作室的东西。我该怎么做?

我正在使用WPF / C#

1 个答案:

答案 0 :(得分:2)

如果是WPF:

textBox.AcceptsReturn = true;
textBox.AcceptsTab = false;
textBox.KeyDown += OnTextBoxKeyDown;
...

private void OnTextBoxKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key != Key.Tab)
        return;

    string tabReplacement = new string(' ', 4);
    string selectedTextReplacement = tabReplacement +
        textBox.SelectedText.Replace(Environment.NewLine, Environment.NewLine + tabReplacement);

    int selectionStart = textBox.SelectionStart;
    textBox.Text = textBox.Text.Remove(selectionStart, textBox.SelectionLength)
                               .Insert(selectionStart, selectedTextReplacement);

    e.Handled = true; // to prevent loss of focus
}