在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中,输入文字时,如何使不同的字符串显示不同的颜色?

就像上面两张图片一样,不同字符串不同颜色。拜托了,谢谢!!!

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中如何使特定文字显示颜色的主要内容,如果未能解决你的问题,请参考以下文章

C#如何改变richTextBox中文字的颜色和大小

VB中如何使RICHTEXTBOX透明

(Visual C#) 在RichTextBox中实现查找特定字符并返回结果的功能

C# 如何获取 RichTextBox 中的内容?

c# richtextbox : 如果把richtextbox中的文字图片保存到数据库(access)中。

C# richtextbox 添加一行彩色文字