リッチテキストボックスの文字削除について
概要
リッチテキストボックスにおいて、文字の色分けを維持しつつ不要文字を削除したい。
内容詳細
リッチテキストボックス(System.Windows.Forms.RichTextBox)についてご質問があります。
検索して調べてた所、文字削除の方法として(例えばリッチテキストボックス「richTextBox_Display」の先頭100文字削除する場合)
richTextBox_Display.Text = richTextBox_Display.Text.Remove(0, 100)
という風にするのが定石の様ですが、この方法を行った場合、リッチテキストボックス内で(SelectionColorで)文字の色変えしていた所が全て黒に変わりました。
(おそらくTextへの代入のみで色情報が渡されていないせい? 何らかの方法で部分削除済みテキストの色情報を渡す必要がある?)
文字の色情報を維持したまま削除したいのですが良い方法はありますでしょうか。
下記は実際に上記の動作となった関数です。
(削除条件の文字数が300と小さいのはデバッグ用に小さな値にしてある為です)
private void DisplayText(Color DispColor, String SetText)
{
//追加文字の色を指定色に変更
richTextBox_Display.Select(richTextBox_Display.Text.Length, 0);
richTextBox_Display.SelectionColor = DispColor;
richTextBox_Display.AppendText(SetText + System.Environment.NewLine);
//文字数が上限の場合、削除
if(richTextBox_Display.Text.Length > 300)
{
//先頭の100文字削除
richTextBox_Display.Text = richTextBox_Display.Text.Remove(0, 100);
}
}