c# - 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。
提前致谢!
最好的祝福,
帕尔齐
解决方案
首先,您需要确保源对象是活动的。为了实现这一点,您需要在全局范围内声明源对象,因此它不会被垃圾收集器清除。
// 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()
{
...
}
推荐阅读
- python - ModuleNotFoundError(适用于 bs4),当使用命令行运行在 PyCharm 上创建的 Python 程序时?
- android - 使用 POST 调用 Android 浏览器?
- javascript - 动态添加的下拉菜单不应用 jQuery
- checkbox - VBA Excel 如何创建不更改 ActiveWorkbook.Saved 状态的 CheckBox?
- python - 在 matplotlib 中绘制图形时遇到问题
- python - 将两个字典键值与 pandas 数据框行匹配
- python - 使用 Python 选择特定的 Excel 输入并将它们保存到另一个 Excel 文件中?
- kotlin - 以“多态”方式处理对象列表的正确方法
- github - 注册;合并请求github时发现冲突
- laravel - Laravel 合集展示与短刊