着色也不是那麼難,但定義術語「字」並不那麼簡單..
下面是兩個例子:
我認爲你可以用正則表達式生活定義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