C# Word Interop.C语言 (((DocumentEvents_Event)document).Close在文档关闭时没有被触发。

问题描述 投票:0回答:1

正如标题所说。((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文档。它的工作原理3的5倍,我尝试和。OnDocumentClosed() 是叫。有人知道我做错了什么吗?我需要它工作5次。我使用 Word 2016.

先谢谢你了!

问候。

帕子

c# .net ms-word ms-office office-interop
1个回答
-1
投票

首先,你需要确保源对象是活的。为了实现这一点,你需要在全局范围内声明源对象,这样它就不会被垃圾收集器刷掉。

// 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()
{
...
}

© www.soinside.com 2019 - 2024. All rights reserved.