Documents.Close使Word可见

时间:2012-04-15 19:20:24

标签: c# ms-word office-interop

我一直在尝试解决这个问题很长一段时间,但还没找到。 在致电Documents.Close()时,使用visible = false打开的Word变为可见。

这是我的密切陈述(文件已保存,因此无需再次保存):

    WordApp.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges,
    Word.WdOriginalFormat.wdOriginalDocumentFormat);

6 个答案:

答案 0 :(得分:2)

您可以致电WordApp.Quit()

Office应用程序仍然遵循MDI方法:您运行1个应用程序,在该应用程序中,您可以打开1个或多个文档。

由于我们通常只打开一个文档,因此很容易在后台丢失对该应用程序的跟踪。但这里有两个关闭级别。

答案 1 :(得分:1)

您还可以在操作后立即明确设置WordApp.Visible = false;这可能会导致短暂闪烁,但应将应用程序设置为不可见。

为避免短暂的可见度闪烁,有时使用WordApp.ScreenUpdating属性也可以提供帮助。在尝试Documents.Close()调用之前将其设置为false,然后在完成后重置为true。

答案 2 :(得分:0)

接受的解决方案(调用WordApp.Quit())对我来说不是一个可行的选择。我试过设置

WordApp.ScreenUpdating = false 

在调用Documents.Close()之前,这也没有帮助 - 我仍然屏幕闪烁。

然后我尝试设置

WordApp.ActiveWindow.Visible = false 
打开文件后立即打开。这也没有任何区别。

最后我尝试了设置

WordApp.ActiveWindow.Top = -5000 

(以便在我的显示器设置中将窗口显示移出可见的桌面区域 - 如果你有一个不寻常的(巨型!)显示器设置,可能不适合你,相应调整),这解决了问题 - 不再闪烁。

讨厌的黑客,但在我的情况下工作。

答案 3 :(得分:0)

上述评论均不适合我。我尝试过:

WordApp.ActiveWindow.Top = -5000

但我的程序以“活动窗口最大化”异常终止。

我最终在调用Document.Close()之前通过调用解决了它:

m_word.ActiveWindow.WindowState = WdWindowState.wdWindowStateMinimize;

这对我来说是一个完美的解决方案。希望它对你也有用。

答案 4 :(得分:0)

使用ActiveDocument.Close()方法不会显示窗口。 WordApp.ActiveDocument.Close(saveChanges: false);

答案 5 :(得分:0)

以上解决方案都不适合我。

我终于意识到问题出在 AutoOpen 宏上。每次打开 Word 文档时,AutoOpen 都会使 ActiveDocument.Visible = False,运行一些更改(如打开样式窗格),然后在最后转动 ActiveDocument.Visible = True

AutoOpen 中的最后一行是导致每个文档在屏幕上短暂闪烁的原因。从 AutoOpen 宏中删除 Visible = FalseVisible = True 完全解决了问题。