Word Interop find.execute () изменяет объект диапазона источника в нежелательное значениеC#

Место общения программистов C#
Ответить
Anonymous
 Word Interop find.execute () изменяет объект диапазона источника в нежелательное значение

Сообщение Anonymous »

Я использую библиотеки Interop Word, чтобы идентифицировать смелый текст в документе Word и добавлять комментарии к этим разделам. Однако, запустив код, я заметил проблему (из слова ui): когда встречается смелая часть или абзац, комментарии несовместимы (иногда многочисленные комментарии для одного истинного положительного, некоторые из них являются ложными негативами).
Во время отладки я обнаружил, что некоторые параграфы возвращают негативы , что они содержат смелые части, не содержат их в поисках. Ниже приведены данные о реализации и конкретная проблема, которую я обнаружил во время отладки. PrettyPrint-Override ">

Код: Выделить всё

string searchRangeText = searchRange.Text;
Эта строка в примере кода правильно показывает содержание абзаца в каждой итерации, подтверждая, что все параграфы подаются должным образом. Согласно документации Microsoft, когда find.execute () успешно работает, она должна переопределить исходный диапазон объект в диапазоне соответствующего текста.
Неожиданное поведение
После успешного поиска. Execute () (где он возвращает true ), I wearce. Execute () (где он возвращает true ), I wears. class = "lang-cs prettyprint-override">

Код: Выделить всё

string foundText = foundRange.Text;
Но результат полностью отличается от исходного searchrange . Фактически, найденной текст, по -видимому, поступает из ранее оцениваемых диапазонов , а не текущего. Очень признателен!

Код: Выделить всё

Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
Word.Paragraph currentPara, nextPara;
currentPara = doc.Paragraphs.Last;

while (currentPara != null)
{
nextPara = currentPara.Previous();

Word.Range searchRange = currentPara.Range.Duplicate;
string searchRangeText = searchRange.Text;

Word.Find find = searchRange.Find;
find.ClearFormatting();
find.Font.Bold = 1;
find.Wrap = Word.WdFindWrap.wdFindStop;

while (find.Execute())
{
Word.Range foundRange = searchRange.Duplicate;
string foundText = foundRange.Text;
foundRange.Comments.Add(foundRange, "Bold Text: '" + foundText + "'");

if (foundRange.End >= searchRange.End)
{
break;
}
searchRange.Start = foundRange.End;
}

currentPara = nextPara;
}
< /code>
 Как проверить < /h3>

[*] Получить документ с несколькими параграфами. < /li>
 Сделайте некоторые части из документа Bold. supdrange.text; 
.
Запустите код, чтобы прокомментировать жирные части. Комментарий @Jonsson я понял, что то, как я представил вопрос ранее, немного вводит в заблуждение. Особенно о том, какая проблема я пытаюсь решить здесь. Итак, я редактирую оригинальный вопрос, делая его немного более общим.

Подробнее здесь: https://stackoverflow.com/questions/797 ... sired-valu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»