HitHighlight только для текущего диапазона - PullRequest
1 голос
/ 14 марта 2019

Я использую следующий код для поиска некоторых строк в моем документе:

Application application = Addin.Application;
Document document = application.ActiveDocument;
Range rng = document.Content;

rng.Find.ClearFormatting();
rng.Find.Forward = true;
rng.Find.Text = findText;

while (rng.Find.Execute() && rng.Find.Found)
{
    //here: rng.Text == findText
    //however rng.Find.HitHighlight(findText, WdColor.wdColorAqua);
    //highlights all occurrences in the document, not in the current range
}

в качестве комментариев в состоянии кода, я ожидаю, что rng.Find.HitHighlight(findText, WdColor.wdColorAqua); будет работать только в текущем диапазоне, но вместо этогоон выполняется для всего документа.

Интересно, что если я начну с другого диапазона, это сработает так, как я ожидаю ... т.е.

Range rng = document.Content.Paragraphs.First.Range;
rng.Find.HitHighlight("video", WdColor.wdColorAqua);

будет только HitHighlight findTextв первом абзаце.

Это противоречиво ... Любые идеи о том, как выполнить HitHighlight только в диапазоне, выбранном с помощью Find?

ПРИМЕЧАНИЕ: Я попробовал это в надстройке NetOffice, и у меня такое же поведение.

1 Ответ

1 голос
/ 14 марта 2019

Похоже, что метод Find.HitHighlight не предназначен для использования одновременно с Find.Execute.Кажется, он использует любой диапазон, когда вы звоните Execute.Если вы не вызываете execute, он использует текущий диапазон.

Примечания

Метод HitHighlight применяется в основном для выделения подсветки поиска в Office Outlook, когда Wordуказано в качестве редактора электронной почты.Однако вы можете использовать этот метод для документов внутри Word, если вы хотите выделить найденный текст.В противном случае используйте метод Execute.

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

Я понимаю, что это неполный ответ, но VSTO не является популярным тегом, и это может быть лучшим, что вы собираетесь получить.Большинство вопросов остаются без ответа, а часто и без комментариев.

...