对 RichTextBox 字符串的不同部分着色

2024-02-20

我正在尝试对要附加到 RichTextBox 的字符串部分进行着色。我有一个由不同字符串构建的字符串。

string temp = "[" + DateTime.Now.ToShortTimeString() + "] " +
              userid + " " + message + Environment.NewLine;

这就是消息构建后的样子。

[9:23pm] 用户:我的留言在这里。

我希望括号 [9:23] 内的所有内容(包括括号 [9:23])均为一种颜色,“用户”为另一种颜色,消息为另一种颜色。然后我想将字符串附加到我的 RichTextBox 中。

我怎样才能做到这一点?


这是一个重载的扩展方法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# 角 http://www.c-sharpcorner.com/UploadFile/mgold/ColorSyntaxEditor12012005235814PM/ColorSyntaxEditor.aspx有关如何减少 RichTextBox 闪烁的想法的文章。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 RichTextBox 字符串的不同部分着色 的相关文章

随机推荐