VSTO Word调用AutoCorrect.Entries.Add添加多语言自动更正条目仅最后一种生效
Word VSTO AutoCorrect多语言条目写入Bug说明
我们发现Word的VSTO存在一个bug:
使用AutoCorrect.Entries.Add方法添加新条目时,条目仅暂存在内存中,只有当Word关闭或释放时才会被写入词典文件。
但问题在于:在同一个Word实例中为多种语言添加条目时,仅最后一种语言的条目会被成功写入词典文件。
复现代码示例
初始实现版本
using var wordApplication = new ApplicationClass(); foreach (var languageId in languageIds) { var wordDoc = wordApplication.Documents.Add(); wordDoc.Range().InsertAfter("Text"); wordDoc.Range().LanguageID = languageId; foreach (var entry in addedEntries) { wordApplication.AutoCorrect.Entries.Add(entry.Item1, entry.Item2); } wordDoc.Close(false); }
简化验证版本
我们也尝试了如下简化版本,最终运行结果一致:
using var wordApplication = new ApplicationClass(); foreach (var languageId in languageIds) { wordApplication.ActiveDocument.Content.LanguageID = languageId; foreach (var entry in addedEntries) { wordApplication.AutoCorrect.Entries.Add(entry.Item1, entry.Item2); } }
问题表现
调试两段代码时可以看到,wordApplication.AutoCorrect.Entries中包含我们遍历添加的所有语言的新条目,但循环结束后关闭Word时,仅最后一种语言的条目被写入磁盘,其余语言的词典未被修改,对应条目全部丢失。
直接在设备上打开Word验证,也确认仅最后一种语言存在新增的自动更正条目,其余语言均无对应条目。
内容的提问来源于stack exchange,提问作者MuffyOne
相关产品推荐
相关产品推荐

