我在保存到Application Document Change事件处理程序中的Word插件之前添加了一个文档:
private void Application_DocumentChange()
{
Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
vstoDocument.BeforeSave += ThisDocument_BeforeSave;
}
我在文档更改中包含了Before save事件处理程序,希望它可以应用于打开的每个word文档。
当只打开一个word文档时,这非常有效。但是,当打开第二个文档然后关闭第一个文档时,该操作不会在保存时触发。
但是,只要第一个文档保持打开状态,保存操作就会很好地触发所有其他文档。
基本上,似乎事件处理程序似乎只应用于第一个打开的文档,并在该文档关闭时停止工作。
干杯
答案 0 :(得分:0)
您需要在全局声明源对象,以防止它被垃圾收集器(GC)滑动。当GC收集堆时,您的源对象可以被销毁,并且您根本不会获得任何事件。
Microsoft.Office.Tools.Word.Document vstoDocument = null;
private void Application_DocumentChange()
{
vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
vstoDocument.BeforeSave += ThisDocument_BeforeSave;
}