zoukankan      html  css  js  c++  java
  • [转]WPF控件 RichTextBox查找定位匹配字符

    private void Search_Click(object sender, RoutedEventArgs e)//查询定位文本
    {
        List<TextRange> textRanges = FindWordFromPosition(richTextBox1.Document.ContentStart, txtSearch.Text);
        foreach (var range in textRanges)
        {
            range.ApplyPropertyValue(TextElement.ForegroundProperty, new SolidColorBrush(Colors.Red));
            //range.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
            //range.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.PowderBlue));
        }
    }
    List<TextRange> FindWordFromPosition(TextPointer position, string word)
    {
        List<TextRange> matchingText = new List<TextRange>();
        while (position != null)
        {
            if (position.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
            {
                //带有内容的文本
                string textRun = position.GetTextInRun(LogicalDirection.Forward);
    
                //查找关键字在这文本中的位置
                int indexInRun = textRun.IndexOf(word);
                int indexHistory = 0;
                while (indexInRun >= 0)
                {
                    TextPointer start = position.GetPositionAtOffset(indexInRun + indexHistory);
                    TextPointer end = start.GetPositionAtOffset(word.Length);
                    matchingText.Add(new TextRange(start, end));
    
                    indexHistory = indexHistory + indexInRun + word.Length;
                    textRun = textRun.Substring(indexInRun + word.Length);//去掉已经采集过的内容
                    indexInRun = textRun.IndexOf(word);//重新判断新的字符串是否还有关键字
                }
            }
    
            position = position.GetNextContextPosition(LogicalDirection.Forward);
        }
        return matchingText;
    }

              


    ---------------------
    作者:FreeSaber
    来源:CNBLOGS
    原文:https://www.cnblogs.com/zhongxinWang/p/5476893.html
    版权声明:本文为作者原创文章,转载请附上博文链接!
    内容解析By:CSDN,CNBLOG博客文章一键转载插件

  • 相关阅读:
    LAMP网站架构解释
    ftp--pureftpd1.0.46
    给远程主机起别名
    ssh修改端口号并进行远程访问
    ssh使两台机器建立连接
    Linux搭建svn服务
    centos上git搭建
    centos上Jenkins搭建
    kvm安装准备
    服务器Java环境配置
  • 原文地址:https://www.cnblogs.com/admans/p/13072619.html
Copyright © 2011-2022 走看看