如何以编程方式设置RichTextbox文本和线条颜色
本文关键字:文本 颜色 RichTextbox 设置 编程 方式 | 更新日期: 2023-09-27 18:01:32
我正在使用这个答案以编程方式添加彩色线条到我的RichTextBox文本。
我的RichTextBoxExtensions
类与该解中的类完全相同。然后我有一个OutputMessage
类:
class OutputMessage
{
private string _message;
private Color _color;
public string Message { get { return _message; } }
public Color Color { get { return _color; } }
public OutputMessage(string message, CodeDeployer.enums.OutputTypes ot)
{
_message = message;
switch (ot)
{
case enums.OutputTypes.Success:
_color = Color.Green;
break;
case enums.OutputTypes.Error:
_color= Color.Red;
break;
case enums.OutputTypes.Warning:
_color= Color.DarkOrange;
break;
default:
_color = Color.Black;
break;
}
}
}
在我的表单上,我维护一个List<OutputMessage>
,然后有一个方法,将迭代List
,并尝试将内容放入我的表单上的RichTextBox
。
private void foo()
{
this.txtOutput = GetOutput();
this.txtOutput.Text = GetOutput().Text;
}
private RichTextBox GetOutput()
{
RichTextBox results = new RichTextBox();
foreach (OutputMessage om in output)
results.AppendText(om.Message, om.Color);
return results;
}
如果我在第一行代码中执行foo()
, txtOutput
根本不会改变。它只是一个空的文本框。
如果我用第二行代码执行foo()
, txtOutput
确实具有来自List<OutputMessage>
的所有文本,但是颜色丢失了。
如果我将GetOutput
更改为直接与表单上的控件交互,它将按预期工作。让它接受RichTextBox
作为参数也可以。
RichTextBox
的.Text
属性是普通的未格式化文本。
Text属性不返回任何关于应用于RichTextBox内容的格式化的信息。要获取富文本格式(RTF)代码,请使用RTF属性。
所以你应该尝试使用.Rtf
属性:
this.txtOutput.Rtf = GetOutput().Rtf;