先上图:
、
昨天说道,用委托将日志信息同时写到日志文件,输出到窗体的富文本框(《委托委托,谁委托谁?》)。但是,那个富文本框绿莹莹的,无论是正常提示还是错误提示,都一个颜色,不好区分。
一般做法,都应该是正确绿色,错误红色。咋整?
上代码:
_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();
}
}