C# RichTextBox-使用多种颜色将文本添加到顶部(仅显示最新的一行)

C# RichTextBox-使用多种颜色将文本添加到顶部(仅显示最新的一行),c#,logging,colors,richtextbox,C#,Logging,Colors,Richtextbox,我正在尝试复制一个日志窗口,因此最新的日志应该出现在最可见的顶部。因此,我需要在顶部添加一个文本(没问题),但有多种颜色(问题) 首先,我存储原始文本。(它是rtf或文本-尝试两者) 然后我添加新的文本,包括用户名和消息。用户名应该是一种颜色,消息应该是另一种颜色。它也总是单线的 通过我的方法,我得到的只是当附加旧文本或旧RTF文本时,只显示最新的“日志” public void AddLog(Log log) { try { string

我正在尝试复制一个日志窗口,因此最新的日志应该出现在最可见的顶部。因此,我需要在顶部添加一个文本(没问题),但有多种颜色(问题)

首先,我存储原始文本。(它是rtf或文本-尝试两者) 然后我添加新的文本,包括用户名和消息。用户名应该是一种颜色,消息应该是另一种颜色。它也总是单线的

通过我的方法,我得到的只是当附加旧文本或旧RTF文本时,只显示最新的“日志”

public void AddLog(Log log)
{
        try
        {
            string oldText = this.richTextBox1.Rtf;

            this.richTextBox1.Text = log.User + ": " + log.Message + "\n";
            this.richTextBox1.Select(0, log.User.Length);
            this.richTextBox1.SelectionColor = Color.GreenYellow;
            this.richTextBox1.Select(log.User.Length + 2, log.Message.Length);
            this.richTextBox1.SelectionColor = Color.White;
            this.richTextBox1.DeselectAll();
            this.richTextBox1.Rtf += oldText;

        }
        catch { }
}
这可能吗?因为它不保存旧的RTF文本,并且旧的RTF文本不能附加在新文本之后,这意味着我可能必须在下面添加最新的文本,这不是我想要的


如果我不保存“RTF”文本,格式(颜色)将消失,只显示一种颜色。

未测试,但请尝试此操作

public void AddLog(Log log)
{
    try
    {
        richTextBox1.SelectAll();            
        string oldText = this.richTextBox1.SelectedRtf;

        this.richTextBox1.Text = log.User + ": " + log.Message + "\n";
        this.richTextBox1.Select(0, log.User.Length);
        this.richTextBox1.SelectionColor = Color.GreenYellow;
        this.richTextBox1.Select(log.User.Length + 2, log.Message.Length);
        this.richTextBox1.SelectionColor = Color.White;
        this.richTextBox1.DeselectAll();
        this.richTextBox1.SelectionStart = this.richTextBox1.TextLength;
        this.richTextBox1.SelectedRtf = oldText;
        this.richTextBox1.DeselectAll();

    }
    catch { }
}

是的,我不知道先选择SelectedRtf文本或只是复制.Rtf文本(格式化文本),然后再添加它有什么区别。但这起作用了。所有其他尝试都在添加新文本后取消了文本格式,或者由于某种原因而变得怪异。我理解的是
Rtf
属性提供了完整的
Rtf格式
,其中as
SelectedRtf
提供了部分内容。我会这样说,与HTML相关
Rtf
+
Rtf
类似于
SomeTagsMetags2
,其中插入
SelectedRtf
只影响子集,因此
sometags,sometags2
。因此,第一种格式会导致无效数据,而第二种格式则不是。:)