Color Rich TextBox C#窗体

时间:2016-07-18 08:29:37

标签: c# multithreading winforms richtextbox

我有一个多线程应用程序,richtextbox从另一个thread更新,而不是在Form1上创建的delegate void SetTextCallback(string text); public static void SetText(String text) { if (Form1.myform.richtextbox.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); Form1.myform.richtextbox.Invoke(d, new object[] { text }); } else { Form1.myform.richtextbox.AppendText(text); } } 所以我使用了委托技巧:

text

问题:如何为此gather_ranks着色?

1 个答案:

答案 0 :(得分:0)

在您附加文本以选择它之后,您必须在RichTextBox上使用Select Method(使用TextLenght查找要选择的范围)。然后,您可以使用SelectionColor Property更改颜色。

当然这应该在UI线程上完成。

public void SetText(string text, Color color)
{
    if (this.RichTextBox1.InvokeRequired) {
        SetTextCallBack d = new SetTextCallBack(SetText);
        this.Invoke(d, {
            text,
            color
        });
    } else {
        int length = this.RichTextBox1.TextLength;
        this.RichTextBox1.AppendText(text);
        this.RichTextBox1.Select(length, text.Length);
        this.RichTextBox1.SelectionColor = color;
    }
}

我已经使用这些虚拟任务来测试它。

private void StartServer
{
    Task y = new Task(() => this.SetText("Yellow Text", Color.Yellow));
    Task z = new Task(() => this.SetText("Red Text", Color.Red));
    y.Start();
    z.Start();
}