【问题标题】:RichTextBox is satisfied when finding one match; I want it to keep searchingRichTextBox 找到一个匹配时满足;我希望它继续搜索
【发布时间】:2012-05-30 22:16:39
【问题描述】:

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

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 处理。

我该怎么做?

【问题讨论】:

    标签: c# winforms richtextbox textchanged


    【解决方案1】:

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

    【讨论】:

    • 第一次找到匹配项时它确实有效;但就是这样。如果它工作一次,我认为会有一些方法可以在之后移动光标以进行任何后续比赛......
    • 几乎完美 - 我刚刚将 SelectionBackColor 更改为 SelectionColor。
    猜你喜欢
    • 1970-01-01
    • 2023-01-21
    • 2021-02-21
    • 2020-11-12
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    相关资源
    最近更新 更多