• RichText实现动态输入关键字高亮颜色显示


            int a = 0;
            string[] kc = new string[40] { "private","protected","public","namespace","class","object","if","else",
                                           "while","switch","case","using","eventargs","return","null","void","int",
                                           "string","float","char","this","set","new","true","false","const",
                                            "static","internal","extends","super","import","default","break",
                                            "try","catch","finally","main","writeline","console","writeLine"    }; 
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                a = changeColor(kc);
                timer1.Enabled = false;
            }
            /// <summary>
            /// 改变richTextBox中指定字符串的颜色
            /// 调用即可
            /// </summary>
            /// <param name="str" value="为指定的字符串"></param>
    
            public int changeColor(string[] str)
            {
                ArrayList list = null;
                int b = 0;
                for (int i = 0; i < str.Length; i++)
                {
                    list = getIndexArray(richTextBox1.Text.ToLower(), str[i]);
                    b += list.Count;
                }
                for (int i = 0; i < str.Length; i++)
                {
                    list = getIndexArray(richTextBox1.Text.ToLower(), str[i]);
                    if (list.Count == 0)
                    {
                        continue;
                    }
                    if (a == b)
                    {
                        richTextBox1.SelectionColor = Color.Empty;
                        return b;
                    }
                    for (int j = 0; j < list.Count; j++)
                    {
                        int index = (int)list[j];
                        richTextBox1.Select(index, str[i].Length);
                        richTextBox1.SelectionColor = Color.Blue;
                        this.richTextBox1.Focus();
                        //设置光标的位置到文本尾 
                        this.richTextBox1.Select(this.richTextBox1.TextLength, 0);
                        //滚动到控件光标处
                        this.richTextBox1.ScrollToCaret();
                        richTextBox1.SelectionColor = Color.Empty;
                    }
                }
                return b;
            }
    
            public ArrayList getIndexArray(String inputStr, String findStr)
            {
                ArrayList list = new ArrayList();
                int start = 0;
                while (start < inputStr.Length)
                {
                    int index = inputStr.IndexOf(findStr, start);
                    if (index >= 0)
                    {
                        list.Add(index);
                        start = index + findStr.Length;
                    }
                    else
                    {
                        break;
                    }
                }
                return list;
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                timer1.Enabled = true;
            }



      

  • 相关阅读:
    无题
    生活真像小说
    草样年华
    Intentional Programming
    厌倦说话
    解释 Intentional Programming
    开始折腾iphone cdma 恢复,降级,刷机,越狱,手编,写号
    新手如何成为更好的图形设计师
    Grunt.js 初使用
    有抱负的程序员应看的10个TED演讲
  • 原文地址:https://www.cnblogs.com/Zingu/p/11769542.html
Copyright © 2020-2023  润新知