2017-03-15 109 views
0

我有一个允许用户输入文本的程序,它会突出显示任何重复的单词。它已经将重复的单词添加到一个列表中,并将所有的单词添加到另一个单词中我希望程序打印出单词,如果使用重复单词,请突出显示它。C#WinForm:选择特定的单词并更改颜色

我试过使用outputBox.Find(repeatList[i])加一个循环,但是这只能找到文本中使用的第一个单词。我也试着标记当前输入的最后一个字母的数字,选择该点,找到该单词后面的坐标。输入长度,然后更改该颜色,但这种方法不起作用。

 for (int h = 0; h < repeatList.Count; h++) 
     { 
      for (int c = 0; c < repeatList.Count; c++) 
      { 
       outputBox.Find(repeatList[h]); 
       outputBox.SelectionColor = Color.Red; 
      } 
     } 

此时在代码中,outputBox已经包含用户输入,我只想知道如何比较单词并选择它们进行着色。我刚刚开始使用Winforms,并且只进行了几个星期的编码,所以我很抱歉 - 我查看了其他答案,但无法实现它们。提前感谢您的回复。

编辑:我只想补充一点,我喜欢的方法为着色文本会因为它打印出每一个字,这是我的初衷,因为我更习惯于控制台应用程序,我可以改变颜色和打印​​更多。如果这种方法比后来检查更容易,我发现要做到这一点。

回答

0

我会使用开始索引并保留它的副本。

int startFrom = 0 
... 
startFrom = outputBox.Find(repeatList[h], startFrom) 

然后,您可以使用带有文本字长度的'startFrom'索引来选择文本。

下面是一个例子:

var findText = "test"; 
    int index = 0; 
    do 
    { 
     index = richTextBox1.Find(findText, index, RichTextBoxFinds.WholeWord); 
     if (index > -1) 
     { 
      richTextBox1.Select(index, findText.Length); 
      richTextBox1.SelectionColor = Color.Red; 
      index++; 
     } 
    } while (index > -1);