【发布时间】:2016-01-26 00:53:53
【问题描述】:
我想开发一个 MS Word 2010 插件(2013/2016 也是),它的工作原理类似于土耳其语文本的拼写检查器(恢复重音字符)。我想为用户提供 3 个选项(通过上下文菜单)以使用该工具。
- 修复文档中的所有文本。 (包括表格和列表等)
- 修复选定区域中的所有文本
- 固定光标位置的单词。
对于第一个选项,我尝试迭代所有单词并通过以下代码逐个修复它们:
var words = App.ActiveDocument.Words;
foreach (Range word in words)
{
var corr = MyCorrecter(word.Text);
word.Select();
App.Selection.TypeText(corr);
}
但是,这陷入了无限循环。 word.Next() 总是返回第一个单词。如果我删除word.Text = MyCorrecter(word.Text); 行,代码将成功迭代所有单词。周围有查找/替换示例,但对于这种特殊情况,这些示例效率不高。
简而言之,在 Word 文档中逐个操作单词最有效的方法是什么?
【问题讨论】:
-
@stuartd 上面的代码,除了
word.Text = MyCorrecter(word.Text);行之外,还循环遍历每个单词。但是当我设置一个单词的文字时,它不起作用。 -
什么样的“不起作用” - 文本没有改变,有错误,或者..?
-
@stuartd 我编辑了这个问题。请重新阅读代码下方的段落。
标签: c# ms-word office-interop