我正在尝试为要附加到RichTextBox的字符串部分上色。我有一个由不同的字符串构建的字符串。
string temp = "[" + DateTime.Now.ToShortTimeString() + "] " + userid + " " + message + Environment.NewLine;
这是消息一旦构造后的样子。
[9:23 pm]用户:我的留言在这里。
我希望括号[9:23]中的所有内容(包括方括号)为一种颜色,“用户”为另一种颜色,而消息为另一种颜色。然后,我想将字符串附加到我的RichTextBox中。
我该怎么做?
这是一个扩展方法,该AppendText方法使用color参数重载该方法:
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();
请注意,如果输出大量消息,您可能会注意到闪烁。有关如何减少RichTextBox闪烁的想法,请参见C#Corner文章。