|
分類:[.NET 全般]
質問です。
richTextBox内に文字列を以下のように定期的に追加して表示させる
RS-232Cからのシリアルログを表示させる部分です。
(その部分は完成してます。)
this.richTextBox1 += str;
そこである特定の文字列(ログ)を発見した場合にその文字列部分だけ
文字色を変えて表示させる変更を入れようとしてます。
今、こんな感じで作ってみたのですが、最初に発見した文字列はうまく
色が変わるのですが、2個目が発見されると1個目は色が消え、3個目が
発見されると、2個目の色が消えとなり、つまり検索がrichtextbox内で
最初に発見されるものしか反映されません。
どのようにすれば実現できますでしょうか?
richTextBox全体からの検索ではなく、追加されていくstr単位で
indexof や、contais などを使っての文字列内文字列検索では、これは実現
できないのですよね?
余談ですが、richTextBox内の行が数千、数万行とかになると以下の方法だと仮に実現
できたとしても描画がおもくなりそうなのが心配です。
int findpos = richTextBox1.Find(findstr, RichTextBoxFinds.Reverse);
if (findpos >= 1 )
{
this.richTextBox1.SelectionStart = findpos;
this.richTextBox1.SelectionLength = findstr.Length;
this.richTextBox1.SelectionColor = System.Drawing.Color.Red;
}
|