2010-01-19 59 views
4

我有一個巨大的字符串(我們正在談論1696108字符的長度),我已經很快從文本文件中讀取。當我將它添加到我的文本框(C#)時,需要很長時間才能完成。像記事本++(非託管代碼,我知道)的程序幾乎可以立即執行,但記事本也需要很長時間。我怎樣纔能有效地添加這個巨大的字符串,以及像Notepad ++這樣的東西如此快速地實現呢?如何有效地將一個巨大的字符串添加到文本框?

回答

5

記事本和窗口TextBox類針對64K文本進行了優化。您應該使用RichTextBox

0

你可以,最初,只呈現UI中可見的前n個字符(假設你有一個滾動文本框)。然後,啓動一個單獨的線程來異步渲染連續的塊。

或者,您可以將它與來自文件的輸入流結合使用。閱讀一個塊並立即將其附加到文本框中。例如(不徹底的,但你的想法)...

private void PopulateTextBoxWithFileContents(string path, TextBox textBox) 
{ 
    using (var fs = File.OpenRead(path)) 
    { 
     using (var sr = new StreamReader(fs)) 
     { 
      while (!sr.EndOfStream) 
       textBox.Text += sr.ReadLine();       

      sr.Close();      
     } 

     fs.Close(); 
    } 
} 
9

如果這是Windows窗體我建議試圖RichTextBox中的下拉更換爲您文本框。在過去,我發現它在處理大文本方面效率更高。此外,在進行修改時,請務必使用經過時間考驗的SelectionStart/SelectedText方法,而不是操縱Text屬性。

rtb.SelectionStart = rtb.TextLength; 
rtb.SelectedText = "inserted text"; // faster 

rtb.Text += "inserted text"; // slower 
相關問題