Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过编程设置RichTextbox文本和线条颜色?_C#_.net_Winforms - Fatal编程技术网

C# 如何通过编程设置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 {

我使用编程方式将彩色线条添加到我的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;
        }
    }
}
在我的表单上,我维护一个
列表
,然后有一个方法可以迭代
列表
,并尝试将内容放入表单上的
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控件,对吗?