2012-10-22 73 views
2

我有用於編輯XML文本的富文本框 我想要如何爲RichTextBox中的XML標籤名稱着色
我希望標記名稱爲紅色或綠色。
任何方式來做到這一點?.NET中的富文本框中的顏色文本

+0

你的意思是你想要一個處理XML格式文檔的語法編輯器嗎? – series0ne

回答

0

MSDN創建格式化從一個RichTextBox文本內容簡單的C#功能: LINK

0

退房scintilla,適用於Windows一個不錯的源代碼編輯組件,它支持語法高亮顯示了。還有一個名爲ScintillaNET的.NET包裝器。

0

使用一個簡單的正則表達式找到位置,在每個標籤(開始和結束)和着色它象下面這樣:

richtextbox1.Select(start, end-start); 

richtextbox1.SelectionColor = Color.Green; 

richtextbox1.Select(start, 0); 
2

工作出了什麼你想要的r egex正在使用this page。一旦你有了這個,你可以使用類似下面的方法來更新RichTextBox

public static void HighlightSyntax(RichTextBox richTextBox, Regex yourRegex, Color someColor) 
{ 
    richTextBox.BeginUpdate(); 
    int selPos = richTextBox.SelectionStart; 
    richTextBox.SelectAll(); 
    richTextBox.SelectionColor = normTextColor; 
    richTextBox.Select(selPos, 0); 

    // For each match from the regex, highlight the word. 
    foreach (Match keyWordMatch in yourRegex.Matches(richTextBox.Text)) 
    { 
     richTextBox.Select(keyWordMatch.Index, keyWordMatch.Length); 
     richTextBox.SelectionColor = someColor; 
     richTextBox.Select(selPos, 0); 
     richTextBox.SelectionColor = normTextColor; 
    } 
    richTextBox.EndUpdate(); 
} 

你也可以通過一個定時器設定的時間後自動更新此。

我希望這會有所幫助。

注意。對於大文本文件,這種方法會很慢!在這種情況下,我會採用Sinctilla.NET作爲一個完整的語法突出顯示,如下面的答案之一所述...

0

我認爲對於小型語法高亮項目,滾動自己的!在已經發布的語法編輯器中突出顯示了一些示例。

https://stackoverflow.com/a/13007641/1033686

https://stackoverflow.com/a/13007710/1033686

對於需要更好的高亮較大的項目,使用Scintilla.NET(但是要注意,它有點重,可能會非常棘手得到工作!)

http://scintillanet.codeplex.com/

對於企業項目使用商業產品,如actipro語法編輯器。

http://www.actiprosoftware.com/products/controls/windowsforms/syntaxeditor?gclid=CI6rrqmglLMCFSfMtAodbE8AhA