RichTextBox分行设置样式

RichTextBox比普通TextBox强大,就在于它能够包含多样式的数据,可以分段、分行自由设置需要的字体样式和颜色。看似简单,今天写的过程中却走了很多弯路,平时不注意的细节问题都显示出来,搞了大半天,终于收场,于是写下来供各位朋友参考,免得再走弯路。

遇到的最大问题是,明明分行选择的字符串,设置颜色和字体后,再增加数据,最终全部都变成设置的样式了。一步一步跟下来,发现问题的根源:换行符和增加字符串的方法。

手动增加一个换行符Envirement.NewLine,在RichTextBox的TextLength属性中会统计这个换行符,占一个长度,但是在Lines属性中却没有统计,因为,自动将这个换行符放在了下一行,即增加“×××”+Envirement.NewLine后,行数会变成增加2,而第二行什么都没有。

还有RichTextBox的Select方法的第一个参数是选择文本的起始位置,这个起始位置是从0开始的,不要认为从1开始,否则很容易就会多选一个而把下一行选进去,这样就会造成全部都选中了。

至于增加文本的方式,极力推荐用Append方法,因为最开始我就是用+=连接的,发现选择完一行后,再增加文本后,SelectionStart始终为0,想想也是,全部都删掉再增加的文本,起始位置可不就是0么。因此,为了向后移下行的选择位置,用Append方法增加文本,这样SelectionStart自动增加,只不过要在之前用变量记录下上次选择文本的结束位置。

下面就是简单的示例:

     private void button1_Click(object sender, EventArgs e)
    {
      int selectStart = 0;
     
      richTextBox1.AppendText("第一行数据"+Environment.NewLine);
      selectStart = richTextBox1.TextLength;
      richTextBox1.Select(selectStart, richTextBox1.TextLength - 1);
      richTextBox1.SelectionColor = Color.Red;
      selectStart = richTextBox1.TextLength;
      richTextBox1.AppendText("第二行数据" + Environment.NewLine);
      richTextBox1.Select(selectStart, richTextBox1.TextLength - 1);
      richTextBox1.SelectionColor = Color.Blue; ;
      selectStart = richTextBox1.TextLength;
      richTextBox1.AppendText("第三行数据" + Environment.NewLine);
      richTextBox1.Select(selectStart, richTextBox1.TextLength - 1);
      richTextBox1.SelectionColor = Color.Green;

    }

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值