RichText实现动态输入关键字高亮颜色显示
阅读原文时间:2023年07月10日阅读:6
    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;  
    }  

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章