C# 如何通过编程设置RichTextbox文本和线条颜色?
我使用编程方式将彩色线条添加到我的RichTextBox文本中 我的C# 如何通过编程设置RichTextbox文本和线条颜色?,c#,.net,winforms,C#,.net,Winforms,我使用编程方式将彩色线条添加到我的RichTextBox文本中 我的RichTextBoxExtensions类与该解决方案中的类完全相同。然后我有一个OutputMessage类: class OutputMessage { private string _message; private Color _color; public string Message { get { return _message; } } public Color Color {
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;
}
}
}
在我的表单上,我维护一个列表
,然后有一个方法可以迭代列表
,并尝试将内容放入表单上的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
确实包含我的列表中的所有文本,但是颜色会丢失
如果我将GetOutput
更改为直接与表单上的控件交互,它将按预期工作。让它接受RichTextBox
作为参数同样有效
有人能给我解释一下吗?我猜这与事物如何通过引用/值传递有关,但我不明白。RichTextBox
的属性是纯无格式文本
Text属性不返回有关应用于RichTextBox内容的格式的任何信息。要获取RTF代码,请使用RTF属性
因此,您应该尝试使用该属性:
this.txtOutput.Rtf = GetOutput().Rtf;
您使用的是windows窗体或wpf控件,而不是asp.net web控件,对吗?