首页 文章

Word 2007 Addin功能区 - InternalStartup

提问于
浏览
-1

使用Visual Studio 2013,我以.NET Framework 4为目标,并创建了一个针对Office 2007和Office 2010的单个加载项 . 我选择了一个2010 Addin,但它应该在2007年的工作中使用此链接:https://blogs.msdn.microsoft.com/vsto/2010/06/04/creating-an-add-in-for-office-2007-and-office-2010-that-lights-up-on-office-2010-mclean-schofield/

我使用了功能区设计器(而不是功能区xml)在我的AddInin启动方法中,我有以下内容:

private void InternalStartup()
{
  this.Startup += new System.EventHandler(ThisAddIn_Startup);
  this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
  ((Word.ApplicationEvents4_Event)this.Application).NewDocument += new Microsoft.Office.Interop.Word.ApplicationEvents4_NewDocumentEventHandler(Application_NewDocument);
  this.Application.DocumentBeforeClose += new Word.ApplicationEvents4_DocumentBeforeCloseEventHandler(Application_DocumentBeforeClose);

//THIS LINE FAILS IN Word 2007 but not in Word 2010
this.Application.ActiveDocument.Saved = false;
}

基本上我正在捕捉close事件,我在那个事件中做了一些我自己的自定义代码 . 这在2010年完美运行 . 2007年功能区安装和一些功能工作,但是当我关闭文档时,我的'Application_DocumentBeforeClose'关闭事件dosnt在Word 2007中被调用 . 有什么建议吗?

更新:我按照建议更改了我的代码,但是当我打开一个错误的文档时,下面的行在Word 2007中失败 - “此命令不可用,因为没有文档打开 . ”

this.Application.ActiveDocument.Saved = false;

1 回答

  • 1

    看看类似的论坛帖子 - Word DocumentBeforeClose not firing . 以下是它所说的内容:

    如果我们打开文档,Word将检测是否修改了新文档 . 如果它是从头开始的空白文档,Word会使用它直接托管目标文档 . 因此,在这种情况下,它不被视为关闭操作 . 因此,DocumentBeforeClose不会触发 .

相关问题