Bezdepbonusu7Программирование: статьи и ответы

Вопрос

C# MSword не выделяет все слово при использовании Find и matchAllWordForms=true

Автор вопроса: Chris W.Ответов: 1

В моей программе я использую Find.Execute для поиска всех словоформ ключевого слова и выделения их. Например, если мой исходный документ содержит слова "выполнение" и "производительность", Find.Execute(...matchAllWordForms=true...) найдет оба слова, но выделит только раздел производительности "выполнение".

Как я могу заставить MSWord выделить все слово? range.Text заменяется на Find.Execute, чтобы просто "выполнить", поэтому я не могу повторить это. Я попытался выполнить Range.Select(), а затем повторить Selection.End, но диапазоны не совпадают с исходным документом.

Любая помощь будет принята с благодарностью!

replaceselectionhighlightms-word

Ответы

Ответ 1 · Chris W.

Ну, я чувствую себя глупо:

Я пытался использовать Selection.Extend и полностью пропустил опцию Selection.Expand. Для тех, кто наткнется на это позже:

range.Select();    // The range after Find.Execute
wordApp.Selection.Expand(Word.WdUnits.wdWord);    // may have to trim off excess whitespace
Word.Range highlightRange = document.Range(wordApp.Selection.Start, wordApp.Selection.End);
wordApp.Selection.Shading.BackgroundPatternColor = (Word.WdColor)System.Drawing.ColorTranslator.ToOle(extractedColor);

Обратите внимание, что я использую Shading для своего маркера (поэтому я могу создавать собственные цвета с помощью System.Drawing.Color.FromARGB(Alpha,R,G,B) вместо 15 цветов по умолчанию).

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы