C#怎样获得richTextBox的行数


richtextbox.Lines.Length
做了个程序,用了个RichTextBox 来记录程序的日志,每条操作记录放在单独的一行,
但随着记录的增加,内存使用也增加。
现在想只保留最后的N条记录在RichTextBox 中
if( richTextBox1.Lines.Length > 3 )
{
string[] sLines = richTextBox1.Lines;
string[] sNewLines = new string[sLines.Length - 3];

Array.Copy( sLines, 3, sNewLines, 0, sNewLines.Length );
richTextBox1.Lines = sNewLines;
}


string[] slines=richtextbox1.Text.Spit('\n');
List<string> line1s=new List<string>();
List<string> line2s=new List<string>();
richtextbox1.Text="";
foreach(string s in slines)
{
       if(s.Contains("字符串1"))line1s.Add(s);
       else if(s.Contains("字符串2"))line2s.Add(s);
        else richtextbox1.Text+="\n"+s;

}
C#的WPF应用程序中,如果你想获取`RichTextBox`控件的行数,可以通过编程方式计算其内部文本的行数。由于`RichTextBox`显示的是`FlowDocument`,它内部是基于段落、行和块的结构。因此,获取行数需要考虑到这些结构特点。以下是一个简单的方法来计算行数: 1. 使用`Document`属性获取`RichTextBox`的`FlowDocument`。 2. 使用`Blocks`属性访问文档中的所有块。 3. 遍历这些块,并检查它们是否是`Paragraph`类型。 4. 对于每一个`Paragraph`,使用其`Inlines`集合来计算行数。对于`TextRange`,可以通过计算换行符来确定行数。 5. 将所有的行数相加得到最终的行数。 下面是一个示例代码,展示了如何实现这个过程: ```csharp int GetLineCount(RichTextBox rtb) { int lineCount = 0; FlowDocument document = rtb.Document; if (document != null) { var blocks = document.Blocks; foreach (var block in blocks) { if (block is Paragraph paragraph) { // 假设每个段落内的内容换行符表示一行的结束 string text = new TextRange(paragraph.ContentStart, paragraph.ContentEnd).Text; lineCount += text.Count(c => c == '\n') + 1; } } } return lineCount; } ``` 需要注意的是,这个方法是基于换行符计算行数的,可能会受到不同操作系统换行符差异的影响。此外,如果`RichTextBox`中的文本是以RTF格式存储的,那么换行符可能是`\par`标签,这种情况下可能需要不同的处理方式来计算行数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值