Найти и выделить проблему в надстройке слова - PullRequest
0 голосов
/ 11 мая 2018

Я использовал, чтобы выделить «слово», используя этот код. Он используется внутри цикла «для каждого», который просматривает коллекцию строк. Но проблема в том, что после того, как все слова выделены, если мы пытаемся изменить любое слово в документе, все выделение автоматически удаляется.

            word.Find find = rng.Find;
            find.Wrap = word.WdFindWrap.wdFindContinue;
            find.Font.UnderlineColor = word.WdColor.wdColorRed;

            find.HitHighlight(
                FindText: wd,
                MatchCase: true,
                TextColor:word.WdColor.wdColorRed,
                MatchWholeWord: true,
                HighlightColor: word.WdColor.wdColorLightYellow
            );

1 Ответ

0 голосов
/ 11 мая 2018

По своему дизайну HitHighlight оставляет выделение только до тех пор, пока документ не будет отредактирован - так работает панель задач «Найти», когда пользователь выполняет поиск не в расширенном режиме.

Если вы хотите постоянное выделение, вам нужно сделать это немного по-другому, используя Replacement.Highlight = true, как в следующем примере.

Word.Document doc = wdApp.ActiveDocument;
Word.Range rng = doc.Content;
Word.Find f = rng.Find;
object oTrue = true;
object missing = Type.Missing;

//Find and highlight
wdApp.Options.DefaultHighlightColorIndex = Word.WdColorIndex.wdPink;
f.ClearFormatting();
f.Replacement.Highlight = -1;
f.Text = "the";
f.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
  ref missing, Word.WdFindWrap.wdFindStop, ref oTrue, ref missing, Word.WdReplace.wdReplaceAll,
  ref  missing, ref missing, ref missing, ref missing);

VBA эквивалент для заинтересованных читателей VBA:

Sub FindXAndHighlight()
    Dim rng As word.Range

    Set rng = ActiveDocument.content
    Options.DefaultHighlightColorIndex = wdPink
    With rng.Find
        .Replacement.Highlight = True
        .Execute findText:="the", Replace:=wdReplaceAll
    End With

End Sub
...