やりたいこと
- RichTextBoxにて書式変更した後にテキストを追加しても書式を損なわないようにしたい
背景
ログビューワーを作成していた際、特定キーワードを発見したら背景色を変更するようにしていましたが、背景色が反映されず、次のような簡易コードで確認してみました。
richTextBox2.Text = "a";
richTextBox2.Update(); // step1
richTextBox2.Text += "b";
richTextBox2.Select(1, 1);
richTextBox2.Update(); // step2
richTextBox2.SelectionBackColor = Color.Pink;
richTextBox2.Update(); // step3
richTextBox2.Text += "c";
richTextBox2.Update(); // step4
step3で背景色が適用されるも、step4で背景色が消えます。
RichTexBoxはデータの実態がRich Text Format (Rtf) なので当然といえば当然なのですね。
実装
今回は、追記するテキストを別のRichTextBoxに貼り付けて書式変更した後、本体のRichTextBoxに貼り付ける方法にしました。
RichTextBox rich = new RichTextBox();
rich.Text = addText;
rich.Select(0, rich.TextLength);
rich.SelectionBackColor = Color.Pink;
richTextBox2.SelectionStart = richTextBox2.TextLength;
richTextBox2.SelectedRtf = rich.Rtf;
元となっている記事
- (はてなブログ)C#でリッチテキストのRtfの追記を行う
以上