我正在使用C#创建一个单词插件。我想通过使用特定范围的Find方法重新创建单词搜索功能。在消息框中单击“确定”时,选择应跳转到下一个找到的单词。
但是,我的代码会不断选择文档中最后找到的单词吗?
private void Zoek()
{
object findText = txtZoek.Text;
Word.Application app = Globals.ThisAddIn.Application;
Word.Document doc = app.ActiveDocument;
//Word.Application ran = doc.Content.Application;
Word.Range huidige = doc.Range();
huidige.Find.Execute(ref findText);
List<Word.Range> zoekrange = new List<Word.Range>();
while (huidige.Find.Found)
{
//Zoekrange is a global List variabele of Ranges
zoekrange.Add(huidige);
huidige.Find.Execute(ref findText);
}
Boolean next = true;
int i = 0;
while (next)
{
zoekrange[i].Select();
DialogResult result = MessageBox.Show("Gevonden, volgende?", "Hi", MessageBoxButtons.OKCancel);
switch (result)
{
case DialogResult.OK: { next = true; i++; break; }
case DialogResult.Cancel: { next = false; break; }
}
}
}
答案 0 :(得分:0)
由于 huidige 是一个引用,因此每次执行都会更新实例。 因此,您最终会在列表中显示多个范围,所有范围都指向相同的范围引用。 这就是为什么你得到最后一个。
您需要做的是创建找到的范围的副本,并将此范围实例添加到列表中。
希望这有帮助。
祝你好运