使用Find和matchAllWordForms = true时,C#MS字不会突出显示整个单词

时间:2012-06-19 21:38:06

标签: c# ms-word selection highlight replace

在我的程序中,我使用Find.Execute搜索关键字的所有单词形式并突出显示它们。例如,如果我的源文档包含“执行”和“性能”,Find.Execute(...matchAllWordForms=true...)将找到这两个单词,但它只会突出显示性能的“执行”部分。

如何让MSWord突出显示整个单词? range.TextFind.Execute更改为“执行”,所以我无法重复。我尝试执行Range.Select()然后迭代Selection.End,但范围与原始文档不匹配。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

嗯,我觉得有点蠢:

我尝试使用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种颜色创建自定义颜色。)