赞
踩
想要更改Text文本中某段需要特殊标注字体的颜色,使用TextBox是很难做到的,因为TextBox支持更改前景色或者背景色,仅支持全部更改,不可能按照需要的显示形式改变,所以可以选用富文本编辑器,也就是—RichTextBox,为了方便理解我会做出简单的解释。
1、直接在需要使用的地方加上如下语句:
List<int> arrylist = calculateIndex(richTextBox1.Text,str); //str为自己的字符串内容
for(int i = 0; i < arrylist.Count; i++)
{
int StrIndex = arrylist[i];
richTextBox1.Select(StrIndex, str.Length);
richTextBox1.SelectionColor = Color.Red;
}
说明:
(1)使用List存储函数calculateIndex返回的一组索引值
(2)for循环,以长度为次数,循环取出其中的每一个值
(3)Select第一参数是指定变色字符串开始的索引值,第二个参数为字符串长度,将这段字符选中
(4)将选定字段的颜色更改为红色
public List<int> calculateIndex(string RichText, string Str) { List<int> array = new List<int>(); int startIndex = 0; while (startIndex < RichText.Length) { int startPosition = RichText.IndexOf(Str, startIndex); if (startPosition >= 0) { array.Add(startPosition); startIndex = startPosition + Str.Length; } else { break; } } return array; }
说明:
(1)这段代码也很简单,就是利用Indexof方法,提取出指定字符串的开始索引值,如果找出索引值,则存储下来,并将下一次的开始索引推进到该字符串之后,如果没有,则跳出当前While循环,最后返回array,由上部分内容承接使用。
(2)如果是动态向RichTextBox中添加内容,并且希望将新增内容变色,也可以使用该方法,但是需要注意将这个方法放在新增之后使用。
另分享:RichTextBox有AppendText方法可以使用,可以直接新增内容到原本的控件中,十分方便,如果需要定位滚动条位置到最新增添的位置,可以使用ScrollToCaret()方法,直接将滚动条移动到最新文本位置
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。