这似乎应该对我有用,但我似乎无法弄清楚
public void ShowReport()
{
foreach (KeyValuePair<int, ReportSet> pair in ReportSets)
{
ReportText.Text += pair.Value.ReportSetText + Environment.NewLine;
foreach (string message in pair.Value.ReportMessages)
{
ReportText.Text += message;
ReportText.Select(ReportText.Text.LastIndexOf(message), message.Length);
ReportText.SelectionColor = pair.Value.Color;
}
ReportText.Text += Environment.NewLine;
}
this.Show();
}
原样,这不会改变文字颜色。如果我在内部循环后删除新行,它将仅更改最后一条消息的颜色。尝试删除所有新行只是为了s和g,但结果相同。有什么想法吗?
答案 0 :(得分:1)
我建议您使用AppendText()代替+=
来添加文字,并避免使用LastIndexOf()
来计算您的选择范围。着色后清除选择也可能是一个好主意:
foreach (KeyValuePair<int, ReportSet> pair in ReportSets) {
ReportText.AppendText(pair.Value.ReportSetText + Environment.NewLine);
foreach (string message in pair.Value.ReportMessages) {
int start = ReportText.TextLength;
ReportText.AppendText(message);
ReportText.Select(start, ReportText.TextLength - start);
ReportText.SelectionColor = pair.Value.Color;
ReportText.SelectionLength = 0;
}
ReportText.AppendText(Environment.NewLine);
}