RichTextBox指定全部文字顯示不同顏色及部分文字高亮顏色顯示


指定全部顯示不同顏色:

        public void SetTextContent(string text, ColorEnum color)
        {
            Font font = new Font("微軟雅黑", 14, FontStyle.Bold);
            richTextBox1.Font = font;
            richTextBox1.Text = text;
            richTextBox1.ReadOnly = true;
            layoutControlItem2.Selected = true;
            SendKeys.Send("{Tab}");  //向活動應用程序發送擊鍵 注意格式:Send("{Tab}");中的{}
            switch (color)
            {
                case ColorEnum.Blue:
                    this.Text = "警告信息";
                    richTextBox1.ForeColor = Color.Blue;
                    break;
                case ColorEnum.Red:
                    this.Text = "錯誤信息";
                    richTextBox1.ForeColor = Color.Red;
                    break;
                default:
                    this.Text = "提示信息";
                    richTextBox1.ForeColor = Color.Black;
                    break;
            }
        }
    public enum ColorEnum
    {
        Black = 0,
        Blue = 1,
        Red = 2
    }

 

指定內容中指定文字高亮顯示:

        private void SetHighlightContent(string text)
        {
            ColorEnum color = ColorEnum.Black;
            string content = string.Empty;
            List<string> findList = new List<string>();
            if (text.IndexOf("#Red#", StringComparison.Ordinal) > 0)
            {
                color = ColorEnum.Red;
                var contentArray = text.Split(new[] { "#Red#" }, StringSplitOptions.None);
                content = contentArray[0];
                var findstrs = contentArray[1];
                findList = GetFindList(findstrs);
            }
            else if (text.IndexOf("#Blue#", StringComparison.Ordinal) > 0)
            {
                color = ColorEnum.Blue;
                var contentArray = text.Split(new[] { "#Blue#" }, StringSplitOptions.None);
                content = contentArray[0];
                var findstrs = contentArray[1];
                findList = GetFindList(findstrs);
            }
            SetHighlight(content, findList, color);
        }

        /// <summary>
        /// 多個要高亮關鍵詞顯示的用'&'連接
        /// </summary>
        /// <param name="findstrs"></param>
        /// <returns></returns>
        private List<string> GetFindList(string findstrs)
        {
            List<string> findList;
            if (findstrs.IndexOf("&", StringComparison.Ordinal) > 0)
            {
                findList = findstrs.Split('&').ToList();
            }
            else
            {
                findList = new List<string>() { findstrs };
            }
            return findList;
        }

        private void SetHighlight(string content, List<string> findList, ColorEnum color)
        {
            if (!string.IsNullOrEmpty(content))
            {
                if (findList.IsHasRow())
                {
                    Font font = new Font("微軟雅黑", 14, FontStyle.Bold);
                    richTextBox1.Font = font;
                    richTextBox1.Text = content;
                    this.Text = @"提示信息";
                    richTextBox1.ReadOnly = true;
                    foreach (var findItem in findList)
                    {
                        List<int> findStrIndexes = GetFindStrIndexes(content, findItem);
                        foreach (var itemindex in findStrIndexes)
                        {
                            richTextBox1.Select(itemindex, findItem.Length);
                            switch (color)
                            {
                                case ColorEnum.Blue:
                                    richTextBox1.SelectionColor = Color.Blue;
                                    break;
                                case ColorEnum.Red:
                                    richTextBox1.SelectionColor = Color.Red;
                                    break;
                            }
                        }
                    }
                    richTextBox1.SelectionStart = richTextBox1.Text.Length; //取消選中
                    layoutControlItem2.Selected = true;
                    SendKeys.Send("{Tab}"); //向活動應用程序發送擊鍵 注意格式:Send("{Tab}");中的{}
                }
                else
                {
                    SetTextContent(content, color);
                }
            }
        }

        private List<int> GetFindStrIndexes(string content, string findStr)
        {
            List<int> result = new List<int>();
            int start = 0;
            while (start < content.Length)
            {
                int index = content.IndexOf(findStr, start, StringComparison.Ordinal);
                if (index >= 0)
                {
                    result.Add(index);
                    start = index + findStr.Length;
                }
                else
                {
                    break;
                }
            }
            return result;
        }

參考:

http://www.cnblogs.com/KardelXiao/p/4236045.html (C#)RichTextBox控件 鏈接跳轉設置
http://blog.csdn.net/crazytaliban/article/details/52002657 RichTextBox用法——設置指定字符串的顏色


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM