RichTextBox に追加される文字列の一部に色を付けようとしています。異なる文字列から構築された文字列があります。
string temp = "[" + DateTime.Now.ToShortTimeString() + "] " +
userid + " " + message + Environment.NewLine;
メッセージが構築されると、次のようになります。
[午後9時23分] ユーザー: ここに私のメッセージがあります。
括弧 [9:23] 内のすべてを 1 つの色にし、「ユーザー」を別の色にし、メッセージを別の色にします。次に、文字列を RichTextBox に追加します。
どうすればこれを実現できるでしょうか?
ベストアンサー1
AppendText
以下は、カラー パラメータを使用してメソッドをオーバーロードする拡張メソッドです。
public static class RichTextBoxExtensions
{
public static void AppendText(this RichTextBox box, string text, Color color)
{
box.SelectionStart = box.TextLength;
box.SelectionLength = 0;
box.SelectionColor = color;
box.AppendText(text);
box.SelectionColor = box.ForeColor;
}
}
使い方は次のようになります:
var userid = "USER0001";
var message = "Access denied";
var box = new RichTextBox
{
Dock = DockStyle.Fill,
Font = new Font("Courier New", 10)
};
box.AppendText("[" + DateTime.Now.ToShortTimeString() + "]", Color.Red);
box.AppendText(" ");
box.AppendText(userid, Color.Green);
box.AppendText(": ");
box.AppendText(message, Color.Blue);
box.AppendText(Environment.NewLine);
new Form {Controls = {box}}.ShowDialog();
大量のメッセージを出力している場合、ちらつきが発生する場合があります。このC#コーナーRichTextBox のちらつきを軽減する方法についてのアイデアについては、この記事をご覧ください。