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

时间:2017-03-15 19:55:22

标签: winforms colors

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

我尝试使用outputBox.Find(repeatList[i])循环,但这只找到文本中使用的第一个单词。我还尝试标记输入的最后一个字母的当前数字,选择该点,找到word.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;
            }
        }

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

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

1 个答案:

答案 0 :(得分:0)

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

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

然后您可以使用&#39; startFrom&#39;索引与文本字长度选择文本。

以下是一个例子:

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