Winforms C#WinForm:选择特定单词并更改颜色

Winforms C#WinForm:选择特定单词并更改颜色,winforms,colors,Winforms,Colors,我有一个程序,允许用户输入文本,它将突出显示任何重复的单词。它已经将重复的单词添加到一个列表中,并将所有单词添加到另一个列表中。我希望程序打印出单词,如果使用了重复单词,则突出显示它 我曾尝试使用带有循环的outputBox.Find(repeatList[I]),但这只找到文本中使用的第一个单词。我还试着为最后键入的字母标记当前的数字,选择该点,在键入的单词.Length之后找到坐标,然后更改该字母的颜色,但没有效果 for (int h = 0; h < repeatL

我有一个程序,允许用户输入文本,它将突出显示任何重复的单词。它已经将重复的单词添加到一个列表中,并将所有单词添加到另一个列表中。我希望程序打印出单词,如果使用了重复单词,则突出显示它

我曾尝试使用带有循环的
outputBox.Find(repeatList[I])
,但这只找到文本中使用的第一个单词。我还试着为最后键入的字母标记当前的数字,选择该点,在键入的单词.Length之后找到坐标,然后更改该字母的颜色,但没有效果

        for (int h = 0; h < repeatList.Count; h++)
        {
            for (int c = 0; c < repeatList.Count; c++)
            {
                outputBox.Find(repeatList[h]);
                outputBox.SelectionColor = Color.Red;
            }
        }
for(int h=0;h
在代码的这一点上,outputBox已经包含了用户的输入,我只想知道如何比较单词并选择它们进行着色。我刚刚开始使用Winforms,并且只编写了几个星期的代码,所以我很抱歉-我已经查看了其他答案,但无法实现它们。提前感谢您的回复


编辑:我想补充一点,我更喜欢的文本着色方法是打印每个单词,这是我的初衷,因为我更习惯于控制台应用程序,在那里我可以更改颜色并打印更多内容。如果这种方法比事后检查更容易,我会这样做。

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

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);