C#,WPF中使用多文本顯示數據,並對其數據進行關鍵字高亮等操做

需求:針對多文本信息顯示,咱們須要對其內容中的某些關鍵字或者某行進行高亮顯示,並用不一樣顏色顯示。this

分析:在C#中,首先要進行多文本信息顯示,能夠RichTextBox(不要使用TextBox)控件,該控件由自動換行等功能,具體代碼以下:spa

/// <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);
}
}
}

效果以下:code

相關文章
相關標籤/搜索