Word Range.Find зависает в той же ячейке таблицы при поиске скрытого текста и добавлении комментариевC#

Место общения программистов C#
Ответить
Anonymous
 Word Range.Find зависает в той же ячейке таблицы при поиске скрытого текста и добавлении комментариев

Сообщение Anonymous »

Я пишу функцию для поиска скрытого текста в документе Word и помечаю его комментариями. Для этого я использую поиск Word.
Когда внутри таблицы обнаруживается скрытый текст, после вставки комментария к скрытому тексту диапазон затрагивается, и теперь я знаю, как двигаться дальше. Моя текущая логика навсегда застревает в самом первом скрытом тексте внутри таблицы.
Это мой код:

Код: Выделить всё

private void RemoveHiddenText()
{
if (cleanUpProperties.SelectedcmbHiddenText == 2)
{
return;
}

Word.Range searchRange = wordDocument.Content.Duplicate; // Ensures full document range
searchRange.Start = 0;
searchRange.End = wordDocument.Content.End;

Word.Find find = searchRange.Find;
find.ClearFormatting();
find.Font.Hidden = 1; // True
find.Text = "";
find.Forward = true;
find.Wrap = Word.WdFindWrap.wdFindStop;

string commentMessage = "";
Word.Comment comment = null;

while (find.Execute())
{
switch (cleanUpProperties.SelectedcmbHiddenText)
{
case 0:
commentMessage = Helper.GetLanguageString("ABC_RemoveHiddenTextsComment") + $"\"{searchRange.Text}\"";
comment = searchRange.Comments.Add(searchRange, commentMessage);
break;

case 1:
commentMessage = Helper.GetLanguageString("ABC_cmbRemoveHiddenTextsUnhide");
comment = searchRange.Comments.Add(searchRange, Helper.GetLanguageString("ABC_cmbRemoveHiddenTextsUnhide"));
searchRange.Font.Hidden = 0;
break;

default:
break;
}

if ((bool)searchRange.Information[Word.WdInformation.wdWithInTable])
{
int movingForwardBylength = 1;
searchRange.SetRange(searchRange.End + movingForwardBylength, wordDocument.Content.End);
}
else
{
// Move the search range forward to avoid infinite loop
searchRange.SetRange(searchRange.End, wordDocument.Content.End);
}

// Reconfigure Find for the new range
find = searchRange.Find;
find.ClearFormatting();

find.Font.Hidden = 1;
find.Text = "";
find.Forward = true;
find.Wrap = Word.WdFindWrap.wdFindStop;
}
}
Каждый раз при добавлении комментария wordDocument.Content.End увеличивается на единицу. Но movingForwardBylength определенно является каким-то большим числом, а не 1. Но мне не удалось его найти. Или в моем коде может быть другая логическая проблема.
Как это решить?

Подробнее здесь: https://stackoverflow.com/questions/798 ... xt-and-add
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»