C#修改富文本框(RichTextBox)指定内容颜色

这篇具有很好参考价值的文章主要介绍了C#修改富文本框(RichTextBox)指定内容颜色。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.前言

最近给客户做了一个协议解包与组包的工具,以便于他们给终端客户或者集成商使用,让客户能够快速集成产品协议,降低客户集成工作量,产品协议是基于JT/T808,但是有增加了自己的一些特殊修改。

客户使用的是C#开发的网关,所以我就基于C#做了一个开发包以及测试工具,在做测试工具的时候有个富文本,对其指定内容字体颜色进行修改差点让我阴沟里翻船,第一次是成功的,但是执行第二次的时候全部文本都变色了。

实现的效果如下:上面是输入的待解码的16进制字符串,左侧是拆包说明,右侧是解析成JSON字符串。

C#修改富文本框(RichTextBox)指定内容颜色

 2.RichTextBox指定内容变色

实现思路是这样的,遍历RichTextBox内容,对每行通过“ --”进行拆分,因为我拆包展示的富文本的内容格式是:

消息体各个属性     --此属性的解释

所以通过“ --”拆分成两段,我需要对第一段内容进行颜色变化。

private void button1_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(richTextBox1.Text))
            {
                //此处是个坑,需要清理上次的内容包含格式,否则再次执行就会出现所有内容都被变色处理了
                richTextBox3.Clear();
                //将数据包进行拆分说明,以此格式呈现:xxxxxx  --xxxxxx
                richTextBox3.Text = SplitData(richTextBox1.Text).ToString();
                //这里是将包解析成JSON字符串并输出JSON格式,因为不是本文的重点所以就不过多说明
                string strResult = DataParser.receiveData(richTextBox1.Text);
                if (string.IsNullOrEmpty(strResult))
                {
                    strResult = "Parsing exception, please check whether the data is normal, or contact the developer!";
                }
                richTextBox2.Text =CommonUtil.ConvertJsonString(strResult);
            }
            else
            {
                MessageBox.Show("Please enter the data to be parsed!", "Tips");
            }
        }

让后对呈现拆包内容的富文本增加一个TextChanged方法,可以看到对此方法的说明:“在控件上更改Text属性的值时引发的事件”。

C#修改富文本框(RichTextBox)指定内容颜色

然后对指定内容进行变色处理。

private void richTextBox3_TextChanged(object sender, EventArgs e)
        {
            for (int i = 0; i < richTextBox3.Lines.Length; i++)
            {
                string[] lineArr = richTextBox3.Lines[i].Split(new string[] { " --" }, StringSplitOptions.None);
                if (lineArr.Count() > 1)
                {
                    //获取每一行第一个字符的索引位置
                    int lineFirstCharIndex = richTextBox3.GetFirstCharIndexFromLine(i);
                    //选中需要变色的内容的起点索引位置以及需要变色的内容长度(就是需要变色的文本的自身长度)
                    richTextBox3.Select(lineFirstCharIndex, lineArr[0].Length);
                    //对其进行变色,当然也可以加上其他属性,比如字体样式改变等等,因为我这里只需要变色即可
                    richTextBox3.SelectionColor = Color.Green;
                }

            }
        }

 如果需要同时对字体的样式进行修改的话,可以在变色后面增加一行对字体样式的修改,比如我此时设置对字体加粗:

private void richTextBox3_TextChanged(object sender, EventArgs e)
        {
            for (int i = 0; i < richTextBox3.Lines.Length; i++)
            {
                string[] lineArr = richTextBox3.Lines[i].Split(new string[] { " --" }, StringSplitOptions.None);
                if (lineArr.Count() > 1)
                {
                    //获取每一行第一个字符的索引位置
                    int lineFirstCharIndex = richTextBox3.GetFirstCharIndexFromLine(i);
                    //选中需要变色的内容的起点索引位置以及需要变色的内容长度(就是需要变色的文本的自身长度)
                    richTextBox3.Select(lineFirstCharIndex, lineArr[0].Length);
                    //对其进行变色,当然也可以加上其他属性,比如字体样式改变等等,因为我这里只需要变色即可
                    richTextBox3.SelectionColor = Color.Green;
                    //对选中的字体进行加粗处理
                    richTextBox3.SelectionFont = new Font(richTextBox3.Font.FontFamily, richTextBox3.Font.Size, FontStyle.Bold);
                }

            }
        }

加粗后效果:

C#修改富文本框(RichTextBox)指定内容颜色

 3.结语

有对物联网开发感兴趣的小伙伴可以私信我,一起学习进步,如果需要此解包工具的小伙伴也可以与我沟通(不收费,但是并非严格的808协议,是客户产品基于808做的一个变种协议,大分部内容还是按808做的)

工具截图:

终端上线数据解包:

C#修改富文本框(RichTextBox)指定内容颜色

 平台下行数据组包:

C#修改富文本框(RichTextBox)指定内容颜色

工具地址:https://download.csdn.net/download/qq_17486399/87303356文章来源地址https://www.toymoban.com/news/detail-413830.html

到了这里,关于C#修改富文本框(RichTextBox)指定内容颜色的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-ui修改默认按钮和文本框点击后的颜色

          我们在使用element-ui的时候,我们可以快速的搭建项目,并可以更快速的实现布局,但是我们如果想要修改它的某些样式的话,我们靠css并不能完全的修改,我之前发布过一个修改element-ui分页背景色的,因为当时我写一个demo需要用到。然后今天写了一个表单,需要用到

    2024年02月11日
    浏览(36)
  • C# WPF读取文本内容的7种方式

    C#读取文本内容的7种方式 代码如下(示例): 代码如下(示例): (1)打开文件 (2)第一种:基于FileStream,并结合它的Read方法读取指定的字节数组,最后转换成字符串进行显示。 (3)第二种:基于FileStream,一个字节一个字节读取,放到字节数组中,最后转换成字符串

    2024年02月08日
    浏览(29)
  • MATLAB修改字体大小,加粗,字体样式,字体颜色,线形,希腊字母,特殊符号,图片文本位置及字体设置等

    1、修改label的字体大小、格式、加粗、颜色: xlabel(\\\'标题\\\',\\\'FontSize\\\',14,\\\'FontWeight\\\',\\\'bold\\\',\\\'FontName\\\',\\\'Times New Roman\\\',\\\'Color\\\',\\\'r\\\'); 2、标题的旋转:xlabel(\\\'标题\\\',\\\'rotation\\\',22);ylabel(\\\'标题\\\',\\\'rotation\\\',-35); 3、颜色符号以及线形、标记符号 颜色符号 标记符号 b 蓝色 . 点 g 绿色 s 方块 r 红色 o 圆圈

    2024年02月15日
    浏览(57)
  • 【Vue】在el-table的el-table-column中,如何控制单行、单列、以及根据内容单独设置样式。例如:修改文字颜色、背景颜色

    用cell-style表属性来实现。在官网中是这样表述这个属性的。    在el-table中用v-bind绑定此属性。(v-bind的简写是:) data中的options数据为: 此时页面显示为:     在methods中声明cellStyle方法。让我们打印出各个参数看一下代表了什么。 控制台打印如下:     其实很好理解,

    2024年02月15日
    浏览(55)
  • Element-Ui组件 单选框(Radio,Checked) 修改点击激活时的文本颜色,填充色和边框色

    /* 选中后的字体颜色 */ /deep/ .el-radio__input.is-checked + .el-radio__label { color: #409eff !important; } /* 选中后圆圈的背景颜色 */ /deep/ .el-radio__input.is-checked .el-radio__inner { background: #409eff !important; border-color: #409eff !important; } // 选中后小圆点的颜色 /deep/ .el-radio__input.is-checked .el-radio__inner::a

    2024年02月16日
    浏览(38)
  • C#读取加载文件中的内容并修改保存

    在编写unity程序时,需要将配置文件中的内容需要读取加载到软件中,因此需要根据文件的相对路径来读取文件中的内容。代码如下: 将加载显示的数据进行修改后,在重新保存到文件中,代码如下: 字符串数组中存放,每一行需要保存的文件内容。

    2024年02月14日
    浏览(49)
  • Unity3D使用C#脚本修改TextMeshPro的内容(以显示系统时间为例)

    在网上找了很多都没有涉及到这个TextMeshPro内容修改,踩了很多坑,记录一下 特别是using TMPro; public TextMeshProUGUI Text; GetComponent();

    2024年02月11日
    浏览(41)
  • IDEA报错:前言中不允许有内容

    idea启动项目提示前言中不允许有内容 解决方法: 首先修改设置:IDEA–File–Settings–File Encodings–with No BOM 选中报错文件右键移除Bom 如果遇到java: 程序包org.springframework.boot不存在的问题参考:【完美解决】java: 程序包org.springframework.boot不存在的解决方法_猿月亮的博客-CSDN博客

    2024年02月07日
    浏览(31)
  • C# &OpenCV 从零开发(0):前言

    由于我想换个机器视觉+运动控制的工作,我就开始了自学机器视觉方向的技术。但是Halcon毕竟是商业化的库,国内用盗版还是怕被告。所以期望使用OpenCV。 OpenCV目前已知的方法的有两个版本 Python:用起来挺简单的,就是Python的语言不适合管理,感觉以后必定会出现问题,不适

    2024年01月18日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包