2012-10-07 1 views
1

Я создаю надстройку MS Office Word на C#. Мне нужно получить некоторую информацию из документа во время работы с ним.Как обновить позиции начала и конца конкретного диапазона после внесения изменений в документ?

Я беру некий Range документа и сохраняю его.

Например, в тексте:

Текст1 TEXT2 text3 text4

откладываю Range из "Text3". Его Start position = 13, End position = 17 (количество символов, как я понимаю).

Если изменить текст перед этим словом:

Текст1 NEW TE XT тэ XT2 text3 Text4

Позиции его Range останутся прежними. При попытке выбрать текст я получаю неправильный текстовый диапазон.

Есть ли способ обновить данные объекта Range после редактирования документа?

ответ

0

В documentation состоянии:

Каждый объект Range определяются начальным и конечная позиция символа

Так что вы предполагаете:

сохраняет диапазон из " text3" . Его начальное положение = 13, конечное положение = 17 (количество символов, как я понимаю).

... правильный.

Позиции его диапазона останутся неизменными. При попытке выбрать текст я получаю неправильный текстовый диапазон.

Я считаю, что это предназначено поведение, и я думаю, что это очень хорошо сочетается то, что документации говорится о диапазонах здесь: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.range(v=office.14).aspx

Есть ли способ, чтобы обновить данные объекта Range после редактирования документ?

Насколько я знаю, это не представляется возможным, и, насколько я могу видеть, the documentation не утверждает, что это должно быть возможно либо.

Сначала я подумал, что, может быть, Word объект существовал герметизирующего такую ​​функциональность, but it turns out что Words коллекция на документ содержит только Ranges, представляющий одно слово каждый - и это не очень помогает либо.

+0

Спасибо за ответ! Я с тобой согласен. Я продолжал искать решение проблемы, но я думаю, что мне нужно написать этот алгоритм вручную. Что я делаю. – Alexander

Смежные вопросы