如何有效地将大字符串添加到文本框?

时间:2010-01-19 07:49:37

标签: c# string textbox

我有一个庞大的字符串(我们说的是长度为1696108个字符),我已经从文本文件中快速阅读了。当我将它添加到我的文本框(C#)时,需要很长时间才能完成。像Notepad ++(非托管代码,我知道)这样的程序几乎可以立即完成,尽管Notepad也需要很长时间。我怎样才能有效地添加这个巨大的字符串,像Notepad ++这样的东西怎么这么快呢?

3 个答案:

答案 0 :(得分:10)

如果这是Windows窗体,我建议尝试使用RichTextBox作为TextBox的替代品。在过去,我发现它在处理大文本方面更有效率。此外,在就地进行修改时,请务必使用经过时间考验的SelectionStart / SelectedText方法,而不是操纵Text属性。

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

rtb.Text += "inserted text"; // slower

答案 1 :(得分:6)

Notepad和Window TextBox类针对64K文本进行了优化。你应该使用RichTextBox

答案 2 :(得分: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();
    }
}
相关问题