我在我的应用程序中创建了一个Word文档列表。然后我为每个文件打电话保护。似乎以前调用的所有文档都受到以下代码的影响。
// create document list use same application
List<Word.Document> docList = somemethod();
// do some operation for each document, e.g. protect
doclist.foreach(d=>{d.protect(...); d.save();})
...//quit the application
我发现最后一个文件没问题,但其他文件受到影响,Microsoft Word控件不像EDraw那样在办公室ActiveX控件中显示边框。
当我更改下面的代码时,问题就消失了:
// create document list use same application
List<Word.Document> docList = somemethod();
doclist.foreach(d=>
{
string filepath = d.fullname;
d.close();
var newDoc = wordApp.Documents.Open(....);
newdoc.protect(...);
newdoc.save();
});
// do some operation for each document, e.g. protect
...//quit the application
为什么?
在这里附上一些方法代码
List<Word.Document> somemethod (Word.Application wordApp)
{
...//define filename
List<Word.Document> desWordDocList = new List<Word.Document>();
...// in foreach
foreach (....)
{
Microsoft.Office.Interop.Word.Document newDoc = wordApp.Documents.Add();
newDoc.SaveAs(filePath);
desWordDocList.Add(newDoc);
}
return desWordDocList;
}