Insert text into WPF textbox at caret position

2019-02-05 20:53发布

问题:

How can I insert text into a WPF textbox at caret position? What am I missing? In Win32 you could use CEdit::ReplaceSel().

It should work as if the Paste() command was invoked. But I want to avoid using the clipboard.

回答1:

To simply insert text at the caret position:

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

To replace the selected text with new text:

textBox.SelectedText = "<new text>";

To scroll the textbox to the caret position:

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


回答2:

If you want to move the caret after the inserted text the following code is useful

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


回答3:

I found an even more simple solution by myself:

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

Then scroll to the position as stated by Tarsier.



回答4:

Use TextBox.CaretIndex to modify the text bound to the TextBox.Text property.



标签: wpf textbox