Вставьте текст в текстовое поле WPF в позиции каретки - PullRequest
19 голосов
/ 22 января 2010

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

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

Ответы [ 4 ]

54 голосов
/ 22 января 2010

Чтобы просто вставить текст в позицию каретки:

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

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

textBox.SelectedText = "<new text>";

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

int lineIndex = textBox.GetLineIndexFromCharacterIndex(textBox.CaretIndex);
textBox.ScrollToLine(lineIndex);
11 голосов
/ 17 июня 2010

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

textBox.SelectedText = "New Text";
textBox.CaretIndex += textBox.SelectedText.Length;
textBox.SelectionLength = 0;
9 голосов
/ 22 января 2010

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

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

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

0 голосов
/ 22 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...