3

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.
}
4

0 回答 0