C# richtextbox.find并选择重复文本

C# richtextbox.find并选择重复文本,c#,winforms,.net-4.0,C#,Winforms,.net 4.0,我目前有一个用于显示长字符串的富文本框。我使用以下代码选择字符串中的“重要”项列表,以粗体显示 foreach (string item in selectionList) { if (item.Length != 0) { int charStart = richTextBox.Find(item); richTextBox.SelectionFont = selectedFont; richTextBox.Sel

我目前有一个用于显示长字符串的富文本框。我使用以下代码选择字符串中的“重要”项列表,以粗体显示

foreach (string item in selectionList)
{
     if (item.Length != 0)
     {
          int charStart = richTextBox.Find(item);
          richTextBox.SelectionFont = selectedFont;
          richTextBox.Select(charStart, item.Length);
     }
 }
如果文本中出现重复项,我想知道选择重复项的最有效方法。例如(本例中用大写字母突出显示的文本)“我想点一些汉堡、薯条和薯条”

这只是示例数据,我使用的数据中有一些重复数据,因此我确实需要能够处理这种情况。 (这是与此相同的查询:但在C#中)

当前,该项在selectionList中出现两次,但my code在richTextBox中仅找到该词的第一个实例,而最后一个实例未突出显示。我使用C#和.NET4.0在VS2013中工作

非常感谢, Anya在循环中调用Find(),直到返回-1为止。请注意,循环中的调用从最后找到的位置+1开始:

        foreach (string item in selectionList)
        {
            if (item.Length != 0)
            {
                int charStart = richTextBox.Find(item, RichTextBoxFinds.None);
                while (charStart != -1)
                { 
                    richTextBox.SelectionFont = selectedFont;
                    richTextBox.Select(charStart, item.Length);
                    charStart = richTextBox.Find(item, charStart + 1, RichTextBoxFinds.None);
                }
            }
        }

我想到了这个,但我真的在这里寻找效率。有人能把它做得更好吗

if (item.Length != 0)
{
     if (!richTextBox.SelectedText.Contains(item))
     {
         int charStart = richTextBox.Find(item);
         richTextBox.SelectionFont = selectedFont;
         richTextBox.Select(charStart, item.Length);
     }
     else
     {
         int charStart = richTextBox.Find(item);
         charStart = richTextBox.Find(item, charStart + item.Length, RichTextBoxFinds.None);
          richTextBox.SelectionFont = selectedFont;
          richTextBox.Select(charStart, item.Length);
      }
}

可能是重复的,看起来很棒!除了我需要选择短语而不是单个单词。而且,仔细看,这个问题是问如何找到重复的,我使用一个列表来保存我的项目,可以很容易地找到重复的项目,我现在需要知道最有效的方法来选择文本中的所有实例,而不仅仅是第一个。实际上,如果能够在文本框中选择每个副本,而不需要选择列表中的副本,那就太好了。SelectionList=(burgers,chips)如果能够自动选择每个单词的每个实例,那就太好了。看起来这是一件正确的事情,但是如果这个特定的代码只能找到一个实例,它会导致无限循环!?。。。不,它只适用于一个实例。我测试过了。当找不到更多实例时,对Find()的第二次调用将返回-1。让我看看你的实现。。。