需求:针对多文本信息显示,我们需要对其内容中的某些关键字或者某行进行高亮显示,并用不同颜色显示。

分析:在C#中,首先要进行多文本信息显示,可以RichTextBox(不要使用TextBox)控件,该控件由自动换行等功能,具体代码如下:

/// <summary>
/// 向RichTextBox控件中添加数据
/// </summary>
/// <param name="strLineLie">要显示的数据列表,有多少条,就添加多少行</param>
private void UpdateRichTextBox(List<string> strLineLie)
{
if (strLineLie.Count == )
{
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 = ;
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(' ')[].Length != )//每行数据中第一个空格前的关键字高亮
{
richTextBox1.Select(index, input.Split(' ')[].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 = , end = text.Length;
int index = richTextBox1.Find(keyStr, start, end, RichTextBoxFinds.None);
while (index != -)
{
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);
}
}
}

效果如下:

C#,WPF中使用多文本显示数据,并对其数据进行关键字高亮等操作的更多相关文章

  1. WPF中如何在文本外面加虚线外框

    WPF中如何在文本外面加虚线外框 昨天突然被问到如何在wpf里面给一段文本加个虚线外框,由于有一段时间没玩wpf了,一时还真没想出来,虽然大概有个思路,但是也不保证正确.今天回到家,闲着没事情也就随便 ...

  2. WPF中StringFormat的用法--显示特定位数的数字

    原文:WPF中StringFormat的用法--显示特定位数的数字 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/art ...

  3. WPF中TreeView控件数据绑定和后台动态添加数据(二)

    写在前面:在(一)中,介绍了TreeView控件MVVM模式下数据绑定的方法.在这篇文章中,将总结给节点添加事件的方法,这样说有些不对,总之实现的效果就是点击某个节点,将出现对应于该节点的页面或者数据 ...

  4. WPF中TreeView控件数据绑定和后台动态添加数据(一)

    数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码. xaml代码: <TreeView Name="syntaxTree" ItemsSourc ...

  5. WPF中添加一个文本输入框,按Enter回车,执行绑定的Command

    在WPF+WMMV模式中使用键盘和鼠标事件的绑定代码如下: <TextBox x:Name="SearchBox" Text="{Binding SearchTex ...

  6. thinkphp不能够将ueditor中的html文本显示

    因为这个问题花费了我好长时间,非常的急躁.fuck!! 这次我首先在富文本框中输入了一些文本,这些文本是带有样式的,比如是代码.然后存入数据库,但是当我再一次将它取出来打算放入富文本框中的时候,马丹, ...

  7. WPF中任务栏只显示主窗口

    我们在用WPF开发的时候,常常会遇到在主窗口打开的情况下,去显示子窗口,而此时任务栏同时显示主窗口与子窗口.这样看起来很不美观.所以在弹出子窗口之前,设置它的几个相应属性,便不会出现这种问题了. // ...

  8. 关于Resouces.resx 在WPF中{x:Static}不显示内容只显示字段的问题解决办法

    问题现象:<object property="{x:Static prefix:typeName.staticMemberName}" .../> 界面中只显示资源引用 ...

  9. MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件

    原文  MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件 UI 前沿技术 WPF 中的多点触控操作事件 Charles Petzold 下载代码示例 就在过去几年,多点触控还只是科幻电 ...

随机推荐

  1. k.tt 研究下生成的逻辑代码:从壹开始前后端分离 [.netCore 填坑 ] 三十二║ 四种方法快速实现项目的半自动化搭建

    更新 1.更新小伙伴 @大龄Giser 提出好点子:试试VS的插件扩展:VSIX.ItemProject等,将T4模板给制作插件,这里先记下,有懂的小伙伴可以自己先试试,我会在以后更新. 2.感谢小伙 ...

  2. 【深度学习篇】--神经网络中的池化层和CNN架构模型

    一.前述 本文讲述池化层和经典神经网络中的架构模型. 二.池化Pooling 1.目标 降采样subsample,shrink(浓缩),减少计算负荷,减少内存使用,参数数量减少(也可防止过拟合)减少输 ...

  3. J2SE学习历程

    2014/12/09 1.+两边有字符串的话,则另外的先转换为字符串再连接. int c = 12; System.out.println(“c=” + c); 2.如果a=2,b=a++,先赋值再运 ...

  4. 利用StackExchange.Redis和Log4Net构建日志队列

    简介:本文是一个简单的demo用于展示利用StackExchange.Redis和Log4Net构建日志队列,为高并发日志处理提供一些思路. 0.先下载安装Redis服务,然后再服务列表里启动服务(R ...

  5. WebSocketSharp 的使用

    Server 端示例代码: class Program { static void Main(string[] args) { var wssv = new WebSocketServer(" ...

  6. 学JAVA第十五天,方法重载及构造方法进一步了解

    由于星期五生病了,所以就没写.今天上课,又来写了!!! 先来说方法的重载. 方法的重载就是有两个方法的方法名相同,但参数不一致,参数个数不一致,或参数的类型不一样. package pkg9;publ ...

  7. ajax验证用户名是否存在

    jsp页面 <head> <script type="text/javascript" src="js/register.js">< ...

  8. vue项目中获取cdn域名插件

    import axios from 'axios' let CdnPath = {} CdnPath.install = function (Vue, options) { Vue.prototype ...

  9. 使用 MapTiler 进行地图切片

    在GIS开发中接触比较多的就是切图与发布,通常大家使用的是GlobalMapper.ArcGIS.GDAL等. 一般在使用Leaflet.js或其他框架开发时,使用的是TMS切片格式,大佬们基本用GD ...

  10. 实现DataTables搜索框查询结果高亮显示

    DataTables是封装好的HTML表格插件,丰富了HTML表格的样式,提供了即时搜索.分页等多种表格高级功能.用户可以编写很少的代码(甚至只是使用官方的示例代码),做出一个漂亮的表格以展示数据.关 ...