2013-07-09 136 views
0

我使用RichTextBoxTextBox來顯示在幾天內收集的一些信息。所以在幾天之後它裏面有很多字符串,我得到了OutOfMemory例外。我認爲這個錯誤是由於大量的數據。是否有一些屬性或功能允許限制RichTextBoxTextBox中的字符串數量?我只需要截斷處於列表開始位置的舊字符串。例如,看看下面的圖片:在RichTextBox和TextBox中截斷文本

enter image description here

任何想法?

+0

添加項目時:'if(達到項目限制){remove(firstItem); } add(newItem);' – SimpleVar

+0

另外,如果你的文本的長度並不接近'int.MaxValue',那麼它意味着你的OutOfMemoryException不是由過度發短信引起的。 – SimpleVar

回答

0

我創建了簡單的代碼,可以讓我解決這個問題。 對於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); 

RichTextBox

 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); 
     } 

我希望它可以幫助別人!