Существует более одного подхода к этому:
Используйте встроенную в Word Find
для поиска в документе в обратном направлении первого экземпляра измененной подсветки.
Установите две закладки, одну для текущей позиции кода в вопросе и одну для предыдущей позиции. Пример кода ниже предназначен для этого варианта.
string CurrentBkm = "_bkmCurrent";
string LastBkm= "_bkmLast";
if(docRange.HighlightColorIndex.Equals(Microsoft.Office.Interop.Word.WdColorIndex.wdRed))
{
docRange.HighlightColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdBlue;
docRange.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdWhite;
if (document.Bookmarks.Exists(CurrentBkm))
{
document.Bookmarks.Add(LastBkm, document.Bookmarks[CurrentBkm].Range.Duplicate);
}
document.Bookmarks.Add(CurrentBkm, docRange);
break;
Код для button2 просто идет в закладку "_bkmLast":
string LastBkm= "_bkmLast";
document.Bookmarks[LastBkm].Range.Select();
Обратите внимание, что имя закладки начинается с подчеркивания _
. Это скрывает закладку в пользовательском интерфейсе Word, поэтому она не будет раздражать пользователя в случае, если в настройках приложения отображаются непечатаемые символы закладки.
Также обратите внимание, что код в вопросе может также работать со встроенной функцией Word Find
для поиска в форматировании. Это почти наверняка будет более эффективным, чем "прохождение" каждого слова в документе и тестирование его выделения. Если бы вы изменили код для использования Find
, решение, которое я предоставляю с закладками, все равно будет работать.