【问题标题】:What is the fastest way to load text file into RichTextBox?将文本文件加载到 RichTextBox 中的最快方法是什么?
【发布时间】:2011-07-16 10:32:46
【问题描述】:

我使用 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 阻碍了它?

【问题讨论】:

  • 你能贴出你用来读取文件和填充richtextbox的代码吗?
  • 是的,当然。已更新。

标签: c# text load richtextbox performance


【解决方案1】:

有一个类似的问题涉及最快的读写文件方式: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;
}

【讨论】:

  • 谢谢,我不知道,也许我的 Pentium IV 很弱,或者 ReadAllLines 速度很慢。
  • 非常感谢。我明白刚才那个循环是不合适的!所有的答案都非常有帮助。谢谢。
【解决方案2】:
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
}

【讨论】:

    【解决方案3】:

    去掉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 是字符串的字符数),这是无用的。

    【讨论】:

    • 谢谢,那个没用,看起来很荒谬。
    【解决方案4】:
    if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        richTextBox1.Text = File.ReadAllText(openFileDialog1.FileName);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-24
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      相关资源
      最近更新 更多