取消保存时引发 DocumentBeforeSaveEventHandler 事件
DocumentBeforeSaveEventHandler event raised when save has been dismissed
在为 Office 编写加载项时,我不得不为 DocumentBeforeSave
事件定义一个事件处理程序。
除一个异常外,此处理程序工作正常。
此异常来自以下内容:
- 我打开一个 word 文档并编辑一些文本。
- 我点击关闭按钮。
- Word 询问我是否要
save
、don't save
或 cancel
。
- 我选择
don't save
.
按照这些步骤,office 仍然强制我进入 DocumentBeforeSave 事件。无法确定用户是否打算取消保存。
有没有办法检查用户是否选择了保存,如果是,怎么办?
到目前为止,MSDN 和其他来源都是空的。
注意:在 office 2013 及更高版本中,这应该由 Doc.IsInAutosave
检查,遗憾的是,此功能在 office 2007 和 office 2010 中不存在。
根据我的假设,根据你的问题,你想要 运行 一些代码仅在文档实际 被 保存的情况下。
一个常见的解决方案是拦截实际的保存命令,而不是为 DocumentBeforeSave
事件注册事件处理程序(如您所述,如果实际保存操作从未发生,也会触发该事件) .
我的回答 here 中描述了这是如何完成的。请注意,您必须在功能区 XML 中定义自定义保存命令,然后将保存期间应 运行 的代码放入相应的功能区回调函数中。
在为 Office 编写加载项时,我不得不为 DocumentBeforeSave
事件定义一个事件处理程序。
除一个异常外,此处理程序工作正常。 此异常来自以下内容:
- 我打开一个 word 文档并编辑一些文本。
- 我点击关闭按钮。
- Word 询问我是否要
save
、don't save
或cancel
。 - 我选择
don't save
.
按照这些步骤,office 仍然强制我进入 DocumentBeforeSave 事件。无法确定用户是否打算取消保存。
有没有办法检查用户是否选择了保存,如果是,怎么办? 到目前为止,MSDN 和其他来源都是空的。
注意:在 office 2013 及更高版本中,这应该由 Doc.IsInAutosave
检查,遗憾的是,此功能在 office 2007 和 office 2010 中不存在。
根据我的假设,根据你的问题,你想要 运行 一些代码仅在文档实际 被 保存的情况下。
一个常见的解决方案是拦截实际的保存命令,而不是为 DocumentBeforeSave
事件注册事件处理程序(如您所述,如果实际保存操作从未发生,也会触发该事件) .
我的回答 here 中描述了这是如何完成的。请注意,您必须在功能区 XML 中定义自定义保存命令,然后将保存期间应 运行 的代码放入相应的功能区回调函数中。