Какой самый быстрый способ загрузить текстовый файл в RichTextBox? - PullRequest
5 голосов
/ 16 марта 2011

Я загружаю текстовый файл в RichTextBox, используя OpenFIleDialog. Но когда большой объем текста (например, текст песни около 50-70 строк), и я нажимаю OPEN, программа зависает на несколько секунд (~ 3-5). Это нормально? Может быть, есть более быстрый способ или компонент для загрузки текстового файла? Если мой вопрос неуместен, просто удалите его. Thanx.

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 ]

8 голосов
/ 16 марта 2011

Похожий вопрос касается самого быстрого способа чтения / записи файлов: Какой самый быстрый способ чтения / записи на диск в .NET?

Тем не менее, 50-70 строк - это ничего .. независимо от того, как вы читаете, он должен немедленно появиться. Возможно, вы читаете из общего сетевого ресурса или что-то еще, что вызывает задержку?

Edit: Теперь, когда я вижу ваш код: удалите цикл и просто напишите richTextBox1.Text = text; один раз. Не имеет смысла присваивать строку в цикле, так как вы уже прочитали все содержимое файла, используя ReadAllText.

if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
    string text = File.ReadAllText(openFileDialog1.FileName);
    richTextBox1.Text = text;
}
5 голосов
/ 16 марта 2011
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 голосов
/ 16 марта 2011

Удалите цикл 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 - количество символов в строке), и это бесполезно.

0 голосов
/ 16 марта 2011
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    richTextBox1.Text = File.ReadAllText(openFileDialog1.FileName);
}
...