对RichTextBox中的文本进行有效的颜色编码

时间:2017-04-25 13:13:11

标签: c# richtextbox

我有一个RichTextBox,用户可以通过遵循规则在运行中使用颜色代码键入一些文本。

  1. { } ( ) | . (dot)这些字符应为红色。
  2. [A-Z] [a-z] [0-9]下划线和连字符。这些应该是深灰色的。
  3. 其他一切都应该是蓝色的。
  4. 现在,当框内容发生变化时,我会在事件中使用此代码。 只要在文本框的内容中检测到更改,就会调用此方法。

    public void colorCode() {
        for (int i = 0 ; i < rtb.Text.Length ; i++) {
             rtb.Select(i,1); //select a single character
             char ch = rtb.Text[i];
             if (ch == '{' || ch == '}' || 
                 ch == '(' || ch == ')' ||
                 ch == '.') 
                 rtb.SelectionColor = Color.Red;
             else if (isAlphaNumeric(ch)) 
                 rtb.SelectionColor = Color.DarkGrey;
             else
                 rtb.SelectionColor = Color.Blue;
        }
    }
    

    正如您所看到的,当有数百个字符时,这可能会非常慢。我怎样才能改善这种状况。

1 个答案:

答案 0 :(得分:0)

您可以在KeyUp事件上执行此操作,因此您只需查看已更改的单个字符。不确定这是否会更快。

private void rtb_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{

    if (e.KeyCode == Keys.OemPeriod
         rtb.SelectionColor = Color.Red;
     ...
    }
}
相关问题