#.net #vb.net #ms-word #vsto #add-in
#.net #vb.net #ms-word #vsto #надстройка
Вопрос:
Я создаю надстройку Word с использованием VSTO (в VB), и у меня довольно досадная проблема. Я хочу отключить обновление экрана, пока я удаляю все элементы управления содержимым в каждой истории моего документа. Итак, я делаю следующее:
Application.ScreenUpdating = False
'loop through all open documents
For Each thisDoc As Word.Document In gbl_docList
'loop through all stories in each doc
For Each thisStoryRange As Word.Range In thisDoc.StoryRanges
thisDoc.Activate() 'active this doc so we can work on it
thisStoryRange.Select() 'select the range
'remove all Content Controls
For Each thisCC As Microsoft.Office.Interop.Word.ContentControl In thisStoryRange.ContentControls
thisCC.Delete() 'remove this CC
Next 'next CC
Next 'next story
Next 'next doc
Application.ScreenUpdating = True
Однако всякий раз, когда Word перебирает истории верхнего или нижнего колонтитулов, он начинает открывать панель внизу экрана и показывать ее пользователю, что вызывает неудобное мерцание. Если нет верхних и нижних колонтитулов, все работает отлично.
ВОПРОСЫ:
-
Кто-нибудь сталкивался с этой проблемой? Есть предложения?
-
В качестве альтернативного решения, есть ли какой-либо способ свернуть / скрыть документ Word в Word, но оставить окно Word открытым? Мне удалось найти способы минимизировать / скрыть все Word.
Ответ №1:
Я могу подтвердить, что, особенно в более поздних версиях Office, параметр обновления экрана не работал по-разному (вы заметите, что элементы управления лентой продолжают обновляться, например, с полужирного на обычный, в зависимости от выбранного текста в вашей процедуре или, как вы делали при обработке верхних и нижних колонтитулов)
Я сообщил об этом еще в 2014 году, и проблема была предоставлена команде Office, но (насколько я видел) так и не была решена. У меня в архиве до сих пор хранится почта с репро и даже видео с этим. Воспроизведение было основано на этом демонстрационном коде:
https://msdn.microsoft.com/en-us/library/office/ff197438 (v=office.15).aspx
Единственная альтернатива — либо свернуть MS Word перед обработкой и восстановить его размер по завершении, либо сделать MS Word полностью невидимым (вы можете показывать диалоговое окно во время обработки с некоторым прогрессом, если это отнимает много времени) и восстановить видимость по завершении.