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

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

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

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


person Chris W.    schedule 19.06.2012    source источник


Ответы (1)


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

Я пытался использовать 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 цветов по умолчанию).

person Chris W.    schedule 20.06.2012
comment
Привет @Chris, добро пожаловать в StackOverflow! Если это решение вашей проблемы, не забудьте отметить его как правильный ответ. Тогда мы все сможем увидеть, есть ли вообще решение. :-) - person Jens H; 21.06.2012
comment
ага, просто жду, когда истечет таймер ожидания - person Chris W.; 21.06.2012