2010-08-23 2 views
1

я хочу, чтобы обрабатывать нажатие клавиши табуляции таким образом, чтоC#: Добавление текста, где находится курсор

если нет выделенного текста, добавить 4 пробела в позиции курсора. если выбран выделенный текст, я хочу добавить 4 пробела в начале каждой выбранной строки. что-то вроде того, что делает визуальная студия. Как мне это сделать?

Я использую WPF/C#

+3

Вы забыли задать вопрос. – driis

+2

В каком типе приложения вы хотите справиться с нажатием клавиши? Язык C# используется повсеместно: WPF, Windows Forms, Silverlight, Console, чтобы назвать несколько примеров. Вероятно, ваш вопрос скорее относится к конкретной платформе, чем к конкретному языку. –

+0

Я ищу свой волшебный кристальный шар, я думаю, вы пытаетесь использовать многострочный texbox, richtextbox или что-то вроде этого ... – Jonathan

ответ

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 
} 
+0

как я могу определить комбинацию клавиш? например. Shift + Tab? –

+0

@jiewmeng: System.Windows.Input.Keyboard.Modifiers. Проверьте мой ответ на свой вопрос: «Как я могу изменить выбранный контент для текста/обертки и т. Д.?» – Ani

Смежные вопросы