VSTO
我有一个使用and的 Microsoft Word 插件c#
。
对于每个文档,我使用文档 ShutDown 事件来清理我的父对象,并使用 BeforeClose 事件来预先验证我的父对象。我的验证需要保存文档并尝试在 BeforeClose 事件中执行此操作。
如果该文档以前从未保存过,则会出现“另存为”对话框。如果用户单击取消,COMException
则会抛出一个并且我正确地抓住了它。然后会Save/Don't Save/Cancel
出现对话框(通常会显示即将关闭但未保存更改的文档)。如果用户从第一个“另存为”对话框保存或从第二个保存对话框保存,ShutDown
则正确触发事件。但是,如果用户在第二个对话框中单击“不保存”,则不会触发 ShutDown 事件。
private void WordDocument_BeforeClose(object sender, System.ComponentModel.CancelEventArgs e)
{
try
{
this.WordDocument.Save();
}
catch (System.Runtime.InteropServices.COMException a)
{
log.Error(a.Message);
}
}
private void WordDocument_Shutdown(Object sender, EventArgs e)
{
// Parent cleanup.
}