winform中有什么代码高亮的组件?该怎么处理

winform中有什么代码高亮的组件?
就是一个文本框,我输入c#的代码,然后一点按钮,代码被高亮显示,即关键字、类型名、字符串值等用不同颜色显示。
有没有相应的组件,并附上下载地址。
------解决思路----------------------

        private void ChangeBadColor()//BAD字样修改为红色
        {
            richTextBox1.SelectAll();
            richTextBox1.SelectionColor = Color.Black;

            int BadIndex = 0;

            while (BadIndex < richTextBox1.Text.Length && BadIndex > -1)
            {
                BadIndex = richTextBox1.Text.IndexOf("Bad", BadIndex + 1);

                if (BadIndex > 0)
                {
                    richTextBox1.Select(BadIndex, 3);
                    richTextBox1.SelectionColor = Color.Red;
                }
            }

            richTextBox1.SelectionLength = 0;
            richTextBox1.SelectionStart = 0;
        }

------解决思路----------------------
循环赋值效率其实并不低,但是每次赋值颜色之后它都会刷新,导致效率低
如果你需要改变颜色的地方太多,那么你最好一开始让布局挂起,等都赋值之后才恢复布局逻辑,让它只刷新一次

至于匹配文字,怎么样也都要从头到尾的去匹配的,不管你是用IndexOf还是正则,这效率都高不到哪里去
------解决思路----------------------
ICSharpCode.TextEditor.dll
HighlightingEditor.dll
这两个就是了
http://www.icsharpcode.net/ 这里面原码就有。
------解决思路----------------------
引用:
Quote: 引用:

循环赋值效率其实并不低,但是每次赋值颜色之后它都会刷新,导致效率低
如果你需要改变颜色的地方太多,那么你最好一开始让布局挂起,等都赋值之后才恢复布局逻辑,让它只刷新一次

至于匹配文字,怎么样也都要从头到尾的去匹配的,不管你是用IndexOf还是正则,这效率都高不到哪里去

请问怎样实现布局挂起只刷新一次啊?

你参考一下Designer.cs文件里的代码就知道了
窗体加载的时候,也是先挂起布局逻辑,一次性显示出来,而不是一个控件一个控件的刷新出来的