Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 截断RichTextBox和TextBox中的文本_C#_Wpf_Exception - Fatal编程技术网

C# 截断RichTextBox和TextBox中的文本

C# 截断RichTextBox和TextBox中的文本,c#,wpf,exception,C#,Wpf,Exception,我正在使用RichTextBox和TextBox显示几天内收集的一些信息。所以几天后,它里面有很多字符串,我得到了OutOfMemoryexception。我认为出现这种错误是因为数据太多。是否有一些属性或函数允许限制RichTextBox和TextBox中的字符串数?我只需要截断列表中的旧字符串。例如,请看下面的图片: 有什么想法吗?我创建了简单的代码,可以解决这个问题。 对于文本框: if (limitLines>0 && simpleTextBox.LineCoun

我正在使用
RichTextBox
TextBox
显示几天内收集的一些信息。所以几天后,它里面有很多字符串,我得到了
OutOfMemory
exception。我认为出现这种错误是因为数据太多。是否有一些属性或函数允许限制
RichTextBox
TextBox
中的字符串数?我只需要截断列表中的旧字符串。例如,请看下面的图片:


有什么想法吗?

我创建了简单的代码,可以解决这个问题。 对于
文本框

if (limitLines>0 && simpleTextBox.LineCount > limitLines)
{
   string tempText = "";
   for (int i = simpleTextBox.LineCount-limitLines; i < simpleTextBox.LineCount; i++)
   {
      tempText += simpleTextBox.GetLineText(i);
   }                                                        
   simpleTextBox.Clear();
   simpleTextBox.Text = tempText;

}
simpleTextBox.AppendText(data);
        TextRange tr = new TextRange(richTextBox.Document.ContentEnd, richTextBox.Document.ContentEnd);
        tr.Text = text + "\r\n";           
        tr.ApplyPropertyValue(TextElement.ForegroundProperty, solidColorBrush);

        if (limitLines > 0 && richTextBox.Document.Blocks.Count > limitLines)
        {
            for (int i = richTextBox.Document.Blocks.Count - limitLines; i < richTextBox.Document.Blocks.Count; i++)
                richTextBox.Document.Blocks.Remove(richTextBox.Document.Blocks.FirstBlock);
        }

我希望这对其他人有帮助

添加项目时:
if(达到项目限制){remove(firstItem);}add(newItem)
此外,如果文本长度不接近
int.MaxValue
,则必须说明OutOfMemoryException不是由过度文本引起的。