“ScreenUpdating = False”不适用于页眉/页脚

时间:2016-10-12 14:13:19

标签: .net vb.net ms-word vsto add-in

我正在使用VSTO(在VB中)构建一个Word加载项,我有一个非常讨厌的问题。我想在删除文档每个故事中的所有内容控件时关闭ScreenUpdating。所以我做了以下几点:

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循环播放Header或Footer故事时,它就会开始在屏幕底部打开一个面板,并向用户显示导致尴尬闪烁的面板。如果没有页眉/页脚,一切都很完美。

问题:

  1. 有没有人遇到过这个问题?有什么建议?

  2. 作为替代解决方案,有没有办法在Word中最小化/隐藏Word文档但保持Word窗口打开?我只能找到最小化/隐藏所有Word的方法。

1 个答案:

答案 0 :(得分:1)

我可以确认,特别是在Office的更高版本中,ScreenUpdating设置无法以各种方式工作(您会注意到Ribbon控件不断更新,例如从Bold更新为正常,具体取决于您的过程中选定的文本,或者就像处理页眉/页脚时那样)

我在2014年以这种方式报告了这个问题,并且已经提供给了Office团队,但是(据我所见)从未解决过。我仍然在我的存档中使用repro邮件,甚至还有一个视频。 repro基于这个演示代码:

https://msdn.microsoft.com/en-us/library/office/ff197438(v=office.15).aspx

唯一的选择是在处理之前最小化MS Word并在完成后恢复其大小,或者使MS Word完全不可见(如果是耗时的功能,您可以在处理时显示一些对话)并在恢复可见性时恢复可见性完成。