创建Word 2007应用程序级别的单词加载项 - 不适用于新文档

时间:2011-06-11 04:58:45

标签: ms-word vsto add-in

我在文章here之后创建了一个Word加载项。我按F5并运行项目,它按预期工作,我认为加载项已安装在我的机器中。所以,现在我打开Word 2007的另一个实例并创建一个文档,我没有看到该代码在新文档上工作。我错过了什么吗?

以下是我正在使用的代码: -

using Word = Microsoft.Office.Interop.Word;

namespace WordAddIn1
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            this.Application.DocumentBeforeSave +=
   new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(Application_DocumentBeforeSave);
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        void Application_DocumentBeforeSave(Word.Document Doc, ref bool SaveAsUI, ref bool Cancel)
        {
            Doc.Paragraphs[1].Range.InsertParagraphBefore();
            Doc.Paragraphs[1].Range.Text = "Text was added by using code.---";
        }


        #region VSTO generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);


        }

        #endregion
    }
}

来自here: - 完成项目开发后,从开发计算机中删除加载项程序集,注册表项和安全设置。否则,每次在开发计算机上打开Word时,加载项将继续运行。 清理开发计算机上已完成的项目 在Visual Studio的“生成”菜单上,单击“清理解决方案”。

现在,当我不清理解决方案时,我应该始终拥有Word 2007的加载项,对吧?我根本没有看到这种情况发生。

2 个答案:

答案 0 :(得分:1)

根据您的工作方式,有一些可能性。

最有可能的是,当您打开新实例时,调试器未附加,因此您的断点未被命中。

另一个可能的原因是它不是新实例,而是实际上是同一实例中的新文档,并且两个文档之间共享相同加载项的相同实例。在这种情况下,不会再次触发ThisAdd.Loaded事件,您必须侦听正在激活的新文档(从内存单词中没有NewDocument事件)

哪种代码不起作用?它是无法看到的效果,还是没有被击中的断点?

答案 1 :(得分:0)

我看到从word 2007中删除该加载项可以解决问题。如果您遇到此问题,请尝试从Word 2007中删除加载项并再次构建解决方案,您的更改将生效。出于某种原因,“清洁解决方案”有时不会删除加载项这个词(至少在我的情况下: - ))

enter image description here

enter image description here