为什么使用'Range.ImportFragment'后跟'ActiveDocument.WordOpenXML'导致崩溃?

时间:2013-08-21 15:09:50

标签: crash ms-word vsto

我正在使用MS Word 2013.我创建了一个非常简单的VSTO 2013 Word加载项目。对于这个项目,我添加了一个Ribbon(Designer版本而不是XML),我已经添加了一个Button。

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属性时会发生崩溃。

0 个答案:

没有答案