我正在尝试复制日志窗口,因此最新的日志应显示在顶部 - 最明显。因此,我需要在顶部添加一个文本(没问题)但有多种颜色(问题)。
首先我存储原始文本。 (这是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”文本,格式(颜色)将消失,只会显示一种颜色。
答案 0 :(得分:2)
未经测试但请尝试此
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 { }
}