将文本文件加载到RichTextBox的最快方法是什么?

时间:2011-03-16 09:18:24

标签: c# text load richtextbox performance

我使用OpenFIleDialog将文本文件加载到RichTextBox中。但是当大量的文本(例如歌曲文本大约50-70行)和我点击OPEN程序挂起几秒钟(〜3-5)。这是正常的吗?也许加载文本文件有一些更快的方法或组件?如果我的问题不合适,只需将其删除。感谢名单。

if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            string text = File.ReadAllText(openFileDialog1.FileName);
            for (int i = 0; i < text.Length - 1; i++)
            {
                richTextBox1.Text = text;
            }
        }

我想也许ReadAllLines会影响它?

4 个答案:

答案 0 :(得分:8)

有一个类似的问题涉及读取/写入文件的最快方式:What's the fastest way to read/write to disk in .NET?

然而,50-70行是没有 ..无论你如何阅读,都应立即飞入。您是否正在阅读网络共享或其他导致延迟的事情?

编辑: 现在我看到了你的代码:删除循环并只写一次richTextBox1.Text = text;。由于您已使用ReadAllText读取了文件的完整内容,因此在循环中分配字符串没有意义。

if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
    string text = File.ReadAllText(openFileDialog1.FileName);
    richTextBox1.Text = text;
}

答案 1 :(得分:5)

void LoadFileToRTB(string fileName, RichTextBox rtb)
{
      rtb.LoadFile(File.OpenRead(fileName), RichTextBoxStreamType.PlainText); // second parameter you can change to fit for you
      // or
      rtb.LoadFile(fileName);
      // or
      rtb.LoadFile(fileName, RichTextBoxStreamType.PlainText); // second parameter you can change to fit for you
}

答案 2 :(得分:2)

删除for循环,因为没用:

string text = File.ReadAllText(openFileDialog1.FileName);
richTextBox1.Text = text;

text是一个字符串,已经包含要传递给textBox的文件的所有文本。

这样做的:

for(int i=0, i < text.Lengt-1; i++)
    richTextBox1.Text = text;

你要分配从文件中读取的文本text.Length-1次(Length是字符串的字符数),这是无用的。

答案 3 :(得分:0)

if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    richTextBox1.Text = File.ReadAllText(openFileDialog1.FileName);
}