2012-05-30 38 views
1

我有這樣的代碼,從而關詞或短語尋求紅:RichTextBox在找到一個匹配時很滿意;我希望它繼續尋找

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治療。

我該怎麼做?

回答

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

它的工作在第一時間找到一個匹配;但就是這樣。如果它有效一次,我認爲會有一些方法可以將光標移到後面的任何後續匹配之後... –

+0

幾乎完美 - 我只是將SelectionBackColor更改爲SelectionColor。 –

相關問題