我正在使用 MS Word 2013。我创建了一个非常简单的 VSTO 2013 Word 插件项目。在这个项目中,我添加了一个功能区(Designer 版本而不是 XML),我添加了一个按钮。
Button 有一个 Click 事件,如下所示:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
var app = Globals.ThisAddIn.Application;
app.Selection.Range.ImportFragment("PathToAnotherWordDocument");
var openXML = app.ActiveDocument.WordOpenXML;
}
然后我按“F5”构建并启动加载项。一旦单词开始,我点击按钮。这会导致 Word 崩溃(它是 Word 本身崩溃,而不是加载项)。
位于的文件PathToAnotherWordDocument
是一个简单的 Word 文档,其中包含一个带有几个单词的段落。
如果我单步执行代码,则一切正常,直到我到达该app.ActiveDocument.WordOpenXML
行。一旦我踏上这一步,就会发生崩溃。
如果我在监视窗口中检查此属性也会发生这种情况,即我向下滚动“app.AtiveDocument”的属性列表,并且一旦WordOpenXML
出现,Word 就会崩溃。监视窗口中的所有其他属性似乎都很好。
如果我注释掉有问题的行,只留下ImportFragment
语句,那么我可以继续使用 Word 就好了。我看到其他 Word 文档中的文字确实已导入,我可以继续编辑,没有任何问题。
为什么会这样?我怎样才能阻止它发生?
编辑
我已经想出了如何阻止它发生:如果我app.ActiveDocument.Content.WordOpenXML
首先将属性分配给一个变量,那么该app.ActiveDocument.WordOpenXML
属性就会神奇地再次开始工作。
尽管这是解决我当前问题的方法,但如果我直接访问 Document 的 WordOpenXML 属性,我仍然想知道为什么会发生崩溃。