1

我有这段代码,它将搜索的单词或短语变为红色:

private void rtb_TextChanged(object sender, EventArgs e) {
    String textToFind = textBoxWordOrPhraseToFind.Text;
    String richText = rtb.Text;
    if ((textToFind == "") || (richText == "") || (!(richText.Contains(textToFind)))) {
        return;
    }
    tOut.Select(richText.IndexOf(textToFind), textToFind.Length);
    tOut.SelectionColor = Color.Red;
}

...但随后它停止了 - 它只会使第一个单词或短语变红。我希望它为 RichTextBox 的整个(匹配)内容提供 Sammy Hagar 处理。

我该怎么做?

4

1 回答 1

3

RichTextBox 不支持多选。
可以搜索相同文本的其他匹配项,但您不能保留多个选择。但是可以更改 SelectionBackColor 属性以模拟多选行为。

搜索可以通过这种方式完成

int pos = 0;
pos = richText.IndexOf(textToFind, 0);
while(pos != -1)
{
    tOut.Select(pos, textToFind.Length); 
    tOut.SelectionBackColor = Color.Red; 
    pos = richText.IndexOf(textToFind, pos + 1);
}
于 2012-05-30T22:23:12.570 回答