2016-02-25 188 views
-1

与Visual Studio 2013我针对.NET Framework 4,并创造了单加载项,同时针对Office 2007和Office 2010。我选择2010的加载项,但它应该在2007年accordind工作此链接: 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/Word 2007中加载项功能区 - InternalStartup

我使用的功能区设计(不带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; 
} 

基本上我捕捉关闭事件,我做了一些在那个事件中我自己的自定义代码。这工作完全在201​​0年2007年色带安装和一些功能的工作原理然而,当我关闭我的文档“Application_DocumentBeforeClose”关闭事件dosnt被调用Word 2007年有什么建议?

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

this.Application.ActiveDocument.Saved = false; 
+0

变化在2010年带制成,2007年不支持。您是使用VSTO功能区设计器创建功能区还是使用功能区XML?如果功能区XML,您使用了哪个命名空间? –

+0

辛迪我使用了丝带设计器而不是xml。我的代码存在于WordAdd类中。 – gisWeeper

+0

你不应该把代码放在InternalStartup中,这是VSTO的代码。将DocumentBeforeClose初始化放入ThisAddIn_Startup。对不起,我以前没有看到过,但由于您的标题强调功能区,这就是我正在关注的。你可能想编辑... –

回答

1

看看类似的论坛主题 - Word DocumentBeforeClose not firing。以下是它的说明:

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

+0

我试过,但是当我在Word 2007中运行它,它在抛出一个错误:this.Application.ActiveDocument.Saved = FALSE; - '此命令不可用,因为没有文档处于打开状态。' – gisWeeper

+0

它返回什么值? –

相关问题