着色也不是那么难,但定义术语“字”并不那么简单..
下面是两个例子:
我认为你可以用正则表达式生活定义word boundaries。您可能需要根据您的需求改进wordPattern
,即根据您的语法! (有关的范例见here!)
int ColorWord(RichTextBox rtb, string word, Color foreColor, Color backColor)
{
string wordPattern = @"\b" + word + @"\b";
var matches = Regex.Matches(rtb.Text, wordPattern);
for (int i = matches.Count - 1; i >= 0; i--)
{
var m = matches[i];
rtb.SelectionStart = m.Index;
rtb.SelectionLength = m.Length;
rtb.SelectionColor = foreColor;
rtb.SelectionBackColor = backColor;
}
return matches.Count;
}
此功能将设置fore-和背景色在一个RichTextBox给定字的每一次出现。由于我们没有真正修改任何文本,所以它横贯后面的比赛只是为了好的措施,所以字母不会移动;所以我们可以从头到尾循环;但也许你想它适应一天的时间改变的话..
一旦你理解了着色(或以任何其他方式格式)的RTB文字工作的,如何通过即首先选择文字和的一部分,然后更改RTB.SelectedXXX
属性,它应该很容易修改..
请注意,单词边界是用于处理普通文本。您可以自己定义新的规则,以包含或排除您想突出显示的语言的字符。
来源
2016-03-16 07:24:05
TaW
您是否试图实现语法高亮?有支持它的控件。使用普通的RichTextBox这是一个真正的痛苦。 –
@SriramSakthivel是的,我试图实现语法突出显示,但不是所有的都是语法 –
请记住,替换函数返回新的字符串。 – Mathijs