1

我正在使用 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 属性,我仍然想知道为什么会发生崩溃。

4

0 回答 0