我正在使用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属性时会发生崩溃。