在C#的RichTextBox中如何使特定文字显示颜色
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#的RichTextBox中如何使特定文字显示颜色相关的知识,希望对你有一定的参考价值。
比如我想在显示的内容中对所有“中国”的字符显示红色,怎么实现啊?
1.查找“中国”,不管是正则或什么的随便你2.每查找一个,都可以知道这个待查询字符串(比如“中国”)的位置和长度,调用RichTextBox的Select(位置,长度)方法,然后设置SelectionColor属性
over!
回复楼下的:
查找是不依赖于光标的,因为你输入Select()方法的参数的是index,这个index依赖于控件的内容,与光标无关 参考技术A 楼上貌似的只能实现选中状态的文字哩~~光标一离开就没戏了~
ColorTextbox楼主去搜一下这个三方控件吧,免费的,可以实现你要的功能 参考技术B 9494,一楼那是选中文字的颜色改变,光标一但不选中,颜色就不会变化. 参考技术C 建议使用控件实现。。。。
C#的richtextbox中,输入文字时,如何使不同的字符串显示不同的颜色?
C#的richtextbox中,输入文字时,如何使不同的字符串显示不同的颜色?
就像上面两张图片一样,不同字符串不同颜色。拜托了,谢谢!!!
#region 日志记录、支持其他线程访问
public delegate void LogAppendDelegate(Color color, string text);
/// <summary>
/// 追加显示文本
/// </summary>
/// <param name="color">文本颜色</param>
/// <param name="text">显示文本</param>
public void LogAppend(Color color, string text)
richTextBoxRemote.AppendText("/n");
richTextBoxRemote.SelectionColor = color;
richTextBoxRemote.AppendText(text);
/// <summary>
/// 显示错误日志
/// </summary>
/// <param name="text"></param>
public void LogError(string text)
LogAppendDelegate la = new LogAppendDelegate(LogAppend);
richTextBoxRemote.Invoke(la, Color.Red, DateTime.Now.ToString("HH:mm:ss ") + text);
/// <summary>
/// 显示警告信息
/// </summary>
/// <param name="text"></param>
public void LogWarning(string text)
LogAppendDelegate la = new LogAppendDelegate(LogAppend);
richTextBoxRemote.Invoke(la, Color.Violet, DateTime.Now.ToString("HH:mm:ss ") + text);
/// <summary>
/// 显示信息
/// </summary>
/// <param name="text"></param>
public void LogMessage(string text)
LogAppendDelegate la = new LogAppendDelegate(LogAppend);
richTextBoxRemote.Invoke(la, Color.Black, DateTime.Now.ToString("HH:mm:ss ") + text);
#endregion追问
给点详细的注释好不好?就这样子很难懂好不好。。。
追答关键代码就一行。 richTextBoxRemote.SelectionColor = color;
,再追加文字
可问题是若在显示其他颜色的字符串后面打字,那个字也是那种颜色。。。
参考技术A #region 初始全部颜色初始化rtb_in.SelectionStart = 0;//初始位置
rtb_in.SelectionLength = rtb_in.TextLength;//
rtb_in.SelectionColor = Color.Black;//
#endregion
Regex reg = new Regex(@"(?i)字符串1|字符串2");//设定的需要改变颜色的固定字符串
MatchCollection mc = reg.Matches(rtb_in.Text, 0);//获取匹配的位置和字符串信息
foreach (Match item in mc)
//逐个字符串变更颜色
rtb_in.SelectionStart = item.Index;
rtb_in.SelectionLength = item.Value.Length;
rtb_in.SelectionColor = Color.Blue;
rtb_in.SelectionStart = rtb_in.TextLength;//回到了文本末尾
rtb_in表示输入的RichTextBox,简单的输入文本后即时判断并且对预先设定的字符串改变颜色,以上执行放于RichTextBox的TextChanged()事件内即可。
以上是关于在C#的RichTextBox中如何使特定文字显示颜色的主要内容,如果未能解决你的问题,请参考以下文章
(Visual C#) 在RichTextBox中实现查找特定字符并返回结果的功能