2012-09-15 110 views
0

我目前正在嘗試開發一個行爲類似於Notepad ++ s的軟件。關於「着色」部分,我使用正則表達式和包含每個單詞的正則表達式顏色的外部文件。RichTextbox着色行爲

該文件看起來如下:

<script&blue 
/>&blue 
\".*?\"&red 

然後,該軟件讀取該文件,並通過在每個新行字符分割它把它轉換成一個字符串數組「字符串[]」。這個數組被稱爲'校正器'。然後我用下面的方法來找到&設置每個字匹配正則表達式的顏色:

foreach (string corrector in Correctors) { 
    string[] spTxt = corrector.Split('&'); 

    Match matches = Regex.Match(rtb_Main.Text, spTxt[0]); 
    Color color = Color.FromName(spTxt[1]); 

    while (matches.Success) 
    { 
     rtb_Main.SelectionStart = matches.Index; 
     rtb_Main.SelectionLength = matches.Length; 

     rtb_Main.SelectionColor = color; 
     matches = matches.NextMatch(); 
    } 
} 

這就是問題發生。該方法的工作原理與數組'Correctors'中的最後一個字符串一致。然而;似乎數組中的其他對象被覆蓋或忽略,因爲匹配其模式的單詞沒有被着色。

出了什麼問題?

在此先感謝,
- Rasmus。

+0

您是否獲得一個例外?一個奇怪的結果?如果是這樣,它會幫助你,如果你發佈它們。 –

回答

2

編譯這個時沒有得到任何錯誤。我的意思是說你是怎麼得到:

while (matches.Success) 

本來應該是這樣的..

  // Use foreach loop. 
      foreach (Match match in matches) 
      { 
       if(match.Success) 
       { 
        //Change color here... 
       } 
      }