2010-01-22 1 views
19

Как вставить текст в текстовое поле WPF в позиции каретки? Что мне не хватает? В Win32 вы можете использовать CEdit :: ReplaceSel().Вставить текст в текстовое поле WPF в позиции каретки

Он должен работать так, как если бы была вызвана команда Paste(). Но я хочу избежать использования буфера обмена.

ответ

51

Чтобы просто вставить текст в каретку положение:

textBox.Text = textBox.Text.Insert(textBox.CaretIndex, "<new text>"); 

Чтобы заменить выделенный текст с новым текстом:

textBox.SelectedText = "<new text>"; 

Для прокрутки текстового поля к позиции курсора:

int lineIndex = textBox.GetLineIndexFromCharacterIndex(textBox.CaretIndex); 
textBox.ScrollToLine(lineIndex); 
0

Используйте TextBox.CaretIndex, чтобы изменить текст, привязанный к свойству TextBox.Text.

+0

есть не что-то более простое? А что, если текст уже выбран? Как его можно заменить новым текстом? И как я могу сделать, чтобы свитки каретки отображались? – Roice

+0

На самом деле это очень простой способ. – Thorsten79

+0

Но вы не считали мои другие потребности: Как его можно заменить новым текстом? И как я могу сделать, чтобы свитки каретки отображались? – Roice

7

Я нашел еще более простое решение:

textBox.SelectedText = "New Text"; 
textBox.SelectionLength = 0; 

Затем прокрутите положение, указанное Тарсиром.

+0

TextBox не имеет свойства SelectedIndex. Я предполагаю, что вы имели в виду SelectedText, и, да, вы правы, это проще. – Tarsier

+0

Да, я имел в виду SelectedText. Я изменил его в своем ответе выше. – Roice

9

Если вы хотите, чтобы переместить курсор после вставленного текста следующего кода полезен

textBox.SelectedText = "New Text"; 
textBox.CaretIndex += textBox.SelectedText.Length; 
textBox.SelectionLength = 0;