Вставить текст в текстовое поле WPF в позиции каретки
Как вставить текст в текстовое поле WPF в позиции каретки? Что мне не хватает? В Win32 вы можете использовать CEdit:: ReplaceSel().
Он должен работать так, как если бы была вызвана команда Paste(). Но я хочу избежать использования буфера обмена.
Ответы
Ответ 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.