首页 > 其他分享 >WPF RichTextBox 文本超过限定行数移除旧数据

WPF RichTextBox 文本超过限定行数移除旧数据

时间:2024-03-11 15:49:13浏览次数:31  
标签:index 行数移 string int text RichTextBox paragraph WPF newLineCount

在使用serilog.sinks.richtextbox 显示日志时,会需要移除旧的日志信息的需求,实现打码如下;

根据换行符“\n” 进行判断;

 

  private void CheckAndRemoveText()
  {
      int newLineCount = 0;
      bool removeText = false;

      foreach (Paragraph paragraph in _richTextBox.Document.Blocks)
      {
          foreach (Run run in paragraph.Inlines)
          {
              newLineCount += CountOccurrences(run.Text, "\n");

              if (newLineCount >= 3)
              {
                  removeText = true;
                  break;
              }
          }

          if (removeText)
          {
              RemoveTextBeforeFirstNewLine(paragraph);
              break;
          }
      }
  }

  private int CountOccurrences(string text, string pattern)
  {
      return text.Split(new string[] { pattern }, System.StringSplitOptions.None).Length - 1;
  }

  private void RemoveTextBeforeFirstNewLine(Paragraph paragraph)
  {
      string text = new TextRange(paragraph.ContentStart, paragraph.ContentEnd).Text;
      int index = text.IndexOf("\n");
      if (index != -1)
      {
          paragraph.Inlines.Clear();
          paragraph.Inlines.Add(new Run(text.Substring(index + 1)));
      }
  }

 

标签:index,行数移,string,int,text,RichTextBox,paragraph,WPF,newLineCount
From: https://www.cnblogs.com/-Timosthetic/p/18066187

相关文章

  • WPF 实现文件/文件夹监听工具
    参考gpt环境软件/系统版本说明WindowsWindows10专业版22H219045.4046MicrosoftVisualStudioMicrosoftVisualStudioCommunity2022(64位)-17.6.5Microsoft.NetSDK8.0.101手动安装Microsoft.NetSDK7.0.306MicrosoftVisualStudio......
  • WPF实现颜色选择器
    先看效果图; 再说一下思路: 打开设计器,属性里面找到"颜色",设置为渐变色,将渐变色设置为9段,分别是,红橙黄绿青蓝紫白黑(Red,Orange,Yellow,Lime,Cyan,Blue,Magenta,White,Black);然后移动滑块儿,比如在红色和橙色和黄色之间移动的时候,会发现颜色的RGB值是有规律的变化的,R是固定......
  • 【WPF】-ComboBox控件详解
    ComboBox控件在很多方面都类似于ListBox控件,但占用的空间要少得多,因为项目列表在不需要时会隐藏起来。ComboBox控件在Windows中的很多地方都有使用,但为了确保每个人都知道它的外观和工作方式,我们将直接进入一个简单的示例:<Windowx:Class="WpfTutorialSamples.ComboBox_co......
  • WPF 选择文件夹,并解决 System.Windows.Forms 不存在的问题
    参考gpthttps://blog.csdn.net/YUNAN_ZHANG/article/details/124689596环境软件/系统版本说明WindowsWindows10专业版22H219045.4046MicrosoftVisualStudioMicrosoftVisualStudioCommunity2022(64位)-17.6.5Microsoft.NetSDK8.0.101......
  • WPF 解决 CommandParameter 参数不更新问题
    参考https://devbox.cn/p/WPFCommandParame_71b81418.html环境软件/系统版本说明WindowsWindows10专业版22H219045.4046MicrosoftVisualStudioMicrosoftVisualStudioCommunity2022(64位)-17.6.5Microsoft.NetSDK8.0.101手动安装Mic......
  • WPF多数类概念性注册加自动扫描
    在java中springboot的配置应用了自动扫描@ComponentScan(value={"com.example","com.fox"})而对于Asp.NetCore可以使用ScrutorstaticvoidMain(string[]args){varcollection=newServiceCollection();collection.Scan(action=>......
  • WPF --- 触摸屏下的两个问题
    引言本片文章分享一下之前遇到的WPF应用在触摸屏下使用时的两个问题。场景具体场景就是一个配置界面,ScrollViewer中包含一个StackPanel然后纵向堆叠,已滚动的方式查看,然后包含多个TextBlock、TextBox以及DataGrid,期间遇到了两个问题:WPF在触摸屏下,如果有滚动条(ScrollV......
  • WPF(.netCore) 嵌入WebApi服务
    1从NUGET添加组件“Swashbuckle.AspNetCore”相关使用代码varbuilder=WebApplication.CreateBuilder();builder.Services.AddControllers();varapp=builder.Build();app.UseHttpsRedirection();a......
  • Avalonia/Wpf 实现文字跑马灯效果
    WPF:<BorderWidth="100"Height="30"BorderBrush="Black"BorderThickness="1"><CanvasClipToBounds="True"><TextBlockText="HelloWorld"......
  • 哪都通-网络代理小工具(wpf/avalonia上手小项目)
    废话不多说直接上链接:anywhere:哪都通(gitee.com)先是用wpf小试牛刀,做了第一版,但咱是个有野心的人,Windows、MacOS、Linux全都要,后面就用Avalonia重构了第二版。抛砖引玉,献丑了:)祝各位使用愉快^_^ wpf版本: MaterialDesignThemes+ Prism Avalonia版本:AvaloniaUI+Rea......