После установки моего текста RichTextBox в строку T позиция каретки в RichTextBox «потеряна» (она идет к ее началу). Вот что я делаю, чтобы попытаться «восстановить» его после того, как он «потерян»:
public static int GetCaretIndex(RichTextBox C)
{
return new TextRange(C.Document.ContentStart, C.CaretPosition).Text.Length;
}
...
int CaretIndex = GetCaretIndex(C); // Get the Caret position before setting the text of the RichTextBox
new TextRange(C.Document.ContentStart, C.Document.ContentEnd).Text = T; // Set the text of the RichTextBox
C.CaretPosition = C.Document.ContentStart.GetPositionAtOffset(CaretIndex, LogicalDirection.Forward); // Set the Caret Position based on the "Caret Index" variable
Однако этот код не работает. «Восстановленный» Карет находится в другом положении, чем «оригинальный» (по какой-то причине всегда позади «оригинального»).
«Сохранение» CaretPosition RichTextBox в качестве TextPointer, похоже, тоже не работает.
Может ли кто-нибудь предоставить мне альтернативный способ «восстановления» каретки или способ исправить приведенный выше код?