Range.Find.Execute - 仅转发错误行为
Range.Find.Execute - Forward only misbehave
我正在使用 .Net 库进行 Microsoft Word 2010 互操作
Word.Document doc = wb.Documents[1];
Word.Range range = doc.Range();
range.Find.Forward = true;
range.Find.Execute("HELLO");
MessageBox.Show("Start " + range.Start.ToString());
MessageBox.Show("End " + range.End.ToString());
//make sure it won't even look back
range.Start = range.End;
range.Find.Execute("HELLO");
MessageBox.Show("Start " + range.Start.ToString());
MessageBox.Show("End " + range.End.ToString());
如果文档中有多个"HELLO",返回的范围只是忽略它,它一直在寻找相同的字符串,我一直得到相同的range.Start和range.End 值一遍又一遍。我在这里错过了什么?
我隔离了这个问题,它似乎 只有当 word 文档中有特殊字符时才会发生,特别是如果文本包含在自定义 table 中。在普通的普通文档上它工作正常。
我最终在每次搜索后对 range.Start 值进行采样,如果它与之前的值相同,我将其起始范围增加 + 1,然后重新搜索。
这是一次又一次地完成,虽然它增加了一些搜索,但它非常 stable。
while (range.text.Contains("HELLO"))
{
range.Find.Execute("HELLO");
while ((range.Start < intLastFoundRangeStartValue) && (range.Find.Found))
{
range.Start += intAddToRangeStartValue;
intAddToRangeStartValue++;
range.Find.Execute("HELLO");
}
}
...
此外,作为一个副产品,它让我不再需要向循环中添加计数器。
我正在使用 .Net 库进行 Microsoft Word 2010 互操作
Word.Document doc = wb.Documents[1];
Word.Range range = doc.Range();
range.Find.Forward = true;
range.Find.Execute("HELLO");
MessageBox.Show("Start " + range.Start.ToString());
MessageBox.Show("End " + range.End.ToString());
//make sure it won't even look back
range.Start = range.End;
range.Find.Execute("HELLO");
MessageBox.Show("Start " + range.Start.ToString());
MessageBox.Show("End " + range.End.ToString());
如果文档中有多个"HELLO",返回的范围只是忽略它,它一直在寻找相同的字符串,我一直得到相同的range.Start和range.End 值一遍又一遍。我在这里错过了什么?
我隔离了这个问题,它似乎 只有当 word 文档中有特殊字符时才会发生,特别是如果文本包含在自定义 table 中。在普通的普通文档上它工作正常。
我最终在每次搜索后对 range.Start 值进行采样,如果它与之前的值相同,我将其起始范围增加 + 1,然后重新搜索。
这是一次又一次地完成,虽然它增加了一些搜索,但它非常 stable。
while (range.text.Contains("HELLO"))
{
range.Find.Execute("HELLO");
while ((range.Start < intLastFoundRangeStartValue) && (range.Find.Found))
{
range.Start += intAddToRangeStartValue;
intAddToRangeStartValue++;
range.Find.Execute("HELLO");
}
}
...
此外,作为一个副产品,它让我不再需要向循环中添加计数器。