WPF RichTextBox Selection
От: dsalodki Беларусь http://dsalodki.wix.com/resume
Дата: 08.11.22 08:11
Оценка:
как получить выделенную область в RichTextBox потом задать такую же для второго у которого такой же текст и для ворда, у которого тоже такой же текст?
с вордом работаем через Interop


var start = Origin.RichTextBox.Selection.Start;
            var end = Origin.RichTextBox.Selection.End;
            var textRange = Target.RichTextBox.Selection;
            textRange.Select(start, end);


выдаёт ошибку System.ArgumentException: 'TextPointer не находится в дереве TextTree, сопоставленном данному объекту.'
Отредактировано 08.11.2022 8:25 dsalodki . Предыдущая версия .
Re: WPF RichTextBox Selection
От: karbofos42 Россия  
Дата: 08.11.22 09:34
Оценка:
Здравствуйте, dsalodki, Вы писали:

D>как получить выделенную область в RichTextBox потом задать такую же для второго у которого такой же текст и для ворда, у которого тоже такой же текст?

D>с вордом работаем через Interop

Ну, видимо, нужно получать смещения относительно начала, а потом по ним воспроизводить такое же смещение у другого документа.
Что-то вроде:
var originStartOffset = Origin.RichTextBox.Document.ContentStart.GetOffsetToPosition(Origin.RichTextBox.Selection.Start);
var originEndOffset = Origin.RichTextBox.Document.ContentStart.GetOffsetToPosition(Origin.RichTextBox.Selection.End);
var targetStart = Target.RichTextBox.Document.ContentStart.GetPositionAtOffset(originStartOffset);
var targetEnd = Target.RichTextBox.Document.ContentStart.GetPositionAtOffset(originEndOffset);
Target.RichTextBox.Selection.Select(targetStart, targetEnd);

В Interop.Word у Selection Start и End — это смещение относительно начала и можно те же originStartOffset и originEndOffset пробросить.
Но это не точно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.