如何获取Word中的所有范围添加在Find方法中

时间:2014-02-10 19:34:36

标签: c# ms-word

我正在使用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; }
   }
 }

}

1 个答案:

答案 0 :(得分:0)

由于 huidige 是一个引用,因此每次执行都会更新实例。 因此,您最终会在列表中显示多个范围,所有范围都指向相同的范围引用。 这就是为什么你得到最后一个。

您需要做的是创建找到的范围的副本,并将此范围实例添加到列表中。

希望这有帮助。

祝你好运