Подтвердить что ты не робот

Вставить текст в текстовое поле WPF в позиции каретки

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

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

4b9b3361

Ответ 1

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

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

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

textBox.SelectedText = "<new text>";

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

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

Ответ 2

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

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

Ответ 3

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

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

Затем прокрутите до позиции, как указано Tarsier.

Ответ 4

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