2015-04-01 63 views
1

我有一個豐富的文本框,我用來顯示Hello World程序的一個例子,並希望關鍵字如'使用''命名空間''類''靜態''無效' 'string'顯示藍色。Readonly richtextbox改變關鍵字C的顏色#

我有「用」以顯示藍色,但只有當用戶開始鍵入或類型的「使用」 我想讀在RichTextBox不僅沒有允許用戶輸入進去

這裏是我的代碼:

private void rtb_TextChanged(object sender, EventArgs e) 
    { 
     string find = "using"; 
     if (rtb.Text.Contains(find)) 
     { 
      var matchString = Regex.Escape(find); 
      foreach (Match match in Regex.Matches(rtb.Text, matchString)) 
      { 
       rtb.Select(match.Index, find.Length); 
       rtb.SelectionColor = Color.Blue; 
       rtb.Select(rtb.TextLength, 0); 
       rtb.SelectionColor = rtb.ForeColor; 
      }; 
     } 
    } 

我很難搞清楚如何爲readonly rtb做到這一點。 我怎麼能編輯我的代碼在只讀RTB上顯示初始化藍色文本

感謝您的幫助

回答

1

沒有必要訂閱TextChanged事件。

將您的代碼在一個單獨的方法:

private void ApplySyntaxHighlite() 
{ 
    string find = "using"; 
    if (richTextBox1.Text.Contains(find)) 
    { 
     var matchString = Regex.Escape(find); 
     foreach (Match match in Regex.Matches(richTextBox1.Text, matchString)) 
     { 
      richTextBox1.Select(match.Index, find.Length); 
      richTextBox1.SelectionColor = Color.Blue; 
      richTextBox1.Select(richTextBox1.TextLength, 0); 
      richTextBox1.SelectionColor = richTextBox1.ForeColor; 
     }; 
    } 
} 

,並調用它,你在RichTextBox設置文本後:

richTextBox1.Text = 
    "using System;\r\nusing System.IO;\r\n\r\nConsole.WriteLine(\"Hello world.\");"; 

ApplySyntaxHighlite(); 

enter image description here

+0

謝謝!我將如何修改查找字符串以包含'命名空間'和'類'等 – FlipperFlapper 2015-04-01 16:57:49

+0

我試圖想出一些快速的事情,但事實證明,這並不是那麼微不足道。可能需要一段時間,或者您可以發佈一個新問題,並查看您可以在問題中找到哪些其他(更好)的眼睛。 – 2015-04-01 17:18:12