1. 程式人生 > >C#,WPF中使用多文字顯示資料,並對其資料進行關鍵字高亮等操作

C#,WPF中使用多文字顯示資料,並對其資料進行關鍵字高亮等操作

需求:針對多文字資訊顯示,我們需要對其內容中的某些關鍵字或者某行進行高亮顯示,並用不同顏色顯示。

分析:在C#中,首先要進行多文字資訊顯示,可以RichTextBox(不要使用TextBox)控制元件,該控制元件由自動換行等功能,具體程式碼如下:

/// <summary>
/// 向RichTextBox控制元件中新增資料
/// </summary>
/// <param name="strLineLie">要顯示的資料列表,有多少條,就新增多少行</param>
private void UpdateRichTextBox(List<string
> strLineLie) { if (strLineLie.Count == 0) { richTextBox1.AppendText("\n\nNo Input Record Content!"); richTextBox1.SelectAll(); richTextBox1.SelectionAlignment = HorizontalAlignment.Center; richTextBox1.SelectionFont = new System.Drawing.Font(richTextBox1.Font.FontFamily, 11.0f, FontStyle.Italic); richTextBox1.SelectionColor
= Color.Gray; return; } //對文字設定對應關鍵字高亮顯示 int index = 0; foreach (string input in strLineLie) { string inputStr = input + "\n"; this.richTextBox1.AppendText(inputStr); if (input.StartsWith("*"))//註釋 { richTextBox1.Select(index, inputStr.Length); richTextBox1.SelectionColor = Color.Green; } else
//當行資料型別高亮 { if (input.Split(' ')[0].Length != 0)//每行資料中第一個空格前的關鍵字高亮 { richTextBox1.Select(index, input.Split(' ')[0].Length); richTextBox1.SelectionColor = Color.Blue; } } index += inputStr.Length; } //設定無效(必填)值高亮顯示 HighText("Unknown|Unspecified", this.richTextBox1.Text); } /// <summary> /// 搜尋關鍵字高亮顯示 /// </summary> /// <param name="keyStrs"></param> /// <param name="text"></param> private void HighText(string keyStrs,string text) { foreach (string keyStr in keyStrs.Split('|')) { int start = 0, end = text.Length; int index = richTextBox1.Find(keyStr, start, end, RichTextBoxFinds.None); while (index != -1) { richTextBox1.SelectionFont = new System.Drawing.Font(richTextBox1.SelectionFont, FontStyle.Underline); richTextBox1.SelectionColor = Color.Red; start = index + keyStr.Length; index = richTextBox1.Find(keyStr, start, end, RichTextBoxFinds.None); } } }

效果如下: