我在文章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的加载项,对吧?我根本没有看到这种情况发生。
答案 0 :(得分:1)
根据您的工作方式,有一些可能性。
最有可能的是,当您打开新实例时,调试器未附加,因此您的断点未被命中。
另一个可能的原因是它不是新实例,而是实际上是同一实例中的新文档,并且两个文档之间共享相同加载项的相同实例。在这种情况下,不会再次触发ThisAdd.Loaded事件,您必须侦听正在激活的新文档(从内存单词中没有NewDocument事件)
哪种代码不起作用?它是无法看到的效果,还是没有被击中的断点?
答案 1 :(得分:0)
我看到从word 2007中删除该加载项可以解决问题。如果您遇到此问题,请尝试从Word 2007中删除加载项并再次构建解决方案,您的更改将生效。出于某种原因,“清洁解决方案”有时不会删除加载项这个词(至少在我的情况下: - ))