首页 > 解决方案 > C# Word 互操作。((DocumentEvents_Event)document)。关闭文档时不会触发Close

问题描述

正如标题所说:((DocumentEvents_Event)document).Close关闭word文档时不会触发。

var wordApp = new Microsoft.Office.Interop.Word.Application();
var document = wordApp.Documents.Open(pathToDocument);

...

document.Activate();
wordApp.Visible = true;
wordApp.Activate();

((DocumentEvents_Event)document).Close += OnDocumentClosed;

...

private void OnDocumentClosed()
{
...
}

我通过关闭 Word 本身来关闭 Word 文档。它在我尝试的 5 次中有 3 次起作用OnDocumentClosed()并被调用。有谁知道我做错了什么?我需要它在 5 次中工作 5 次。我使用Word 2016

提前致谢!

最好的祝福,

帕尔齐

标签: c#.netms-wordms-officeoffice-interop

解决方案


首先,您需要确保源对象是活动的。为了实现这一点,您需要在全局范围内声明源对象,因此它不会被垃圾收集器清除。

// declare at the class level
var wordApp = new Microsoft.Office.Interop.Word.Application();
var document = wordApp.Documents.Open(pathToDocument);

// somewhere in the code
document.Activate();
wordApp.Visible = true;
wordApp.Activate();
((DocumentEvents_Event)document).Close += OnDocumentClosed;

// event handler
private void OnDocumentClosed()
{
...
}


推荐阅读