窗体用富文本框输出日志信息,不同颜色加以配合

先上图:
这里写图片描述

昨天说道,用委托将日志信息同时写到日志文件,输出到窗体的富文本框(《委托委托,谁委托谁?》)。但是,那个富文本框绿莹莹的,无论是正常提示还是错误提示,都一个颜色,不好区分。
这里写图片描述

一般做法,都应该是正确绿色,错误红色。咋整?

上代码:

_rtb.SelectionStart = _rtb.TextLength;
_rtb.SelectionLength = 0;
_rtb.SelectionColor = Color.Red;//红色
_rtb.AppendText(mess + "\r\n");
_rtb.SelectionColor = DefaultColor;

完整代码:

public class ShowInfo
{
    Form form;
    RichTextBox _rtb;
    readonly int _rowsLimit;
    readonly Color DefaultColor = Color.Lime;//蓝绿色
    public ShowInfo(Form form,RichTextBox rtb,int rowsLimit = 20)
    {
        this.form = form;

        this._rtb = rtb;
        this._rtb.BackColor = SystemColors.ControlText;//背景色为黑色
        this._rtb.ForeColor = DefaultColor;//前景色即文字颜色为蓝绿色

        this._rowsLimit = rowsLimit;

        getTitle();
    }

    public void ShowText(string mess)
    {
        if (_rtb.InvokeRequired)
        {// 当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它
            Action<string> dlg = (x) => {
                showText((object)mess);
            };
            _rtb.Invoke(dlg, mess);
        }
        else
        {
            showText((object)mess);
        }
    }
    long _rows = 0;
    void showText(object objmess)
    {
        string mess = objmess.ToString();

        if (_rows < _rowsLimit)
        {
            _rows++;
        }
        else
        {
            _rows = 0;
            _rtb.Clear();
            _rtb.ClearUndo();
            _rtb.Text = "";
        }

        if (mess.IndexOf("错误") != -1)
        {
            _rtb.SelectionStart = _rtb.TextLength;
            _rtb.SelectionLength = 0;
            _rtb.SelectionColor = Color.Red;//红色
            _rtb.AppendText(mess + "\r\n");
            _rtb.SelectionColor = DefaultColor;
        }
        else
        {
            _rtb.AppendText(mess+ "\r\n");
        }
        //_rtb.SelectionStart = _rtb.Text.Length;
        //_rtb.ScrollToCaret();
    }
}

猜你喜欢

转载自blog.csdn.net/leftfist/article/details/81346577