Word 2007 Addin功能区 - InternalStartup

时间:2016-02-25 16:16:42

标签: c# ms-word ribbon word-addins

使用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 个答案:

答案 0 :(得分:1)

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

  

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