Winforms показывает содержимое большого файла - PullRequest
0 голосов
/ 18 декабря 2009

Как лучше всего показать содержимое большого текстового файла пользователю с помощью Winforms? Сейчас я пробовал многострочное текстовое поле, но это довольно медленно для файла размером 2 МБ.

Ответы [ 3 ]

1 голос
/ 18 декабря 2009

Хм. Интересно. Время для эксперимента.

Я запустил проект WinNet .Net с помощью кнопки, которая загружает текстовый файл размером 50 тыс. Строк из моего жесткого диска в список. Эта часть почти мгновенная с StreamReader.

Загрузка строк в моем стандартном многострочном текстовом поле "от Microsoft" произошла довольно быстро:

var lines = new List<string>();
using (var sr = new StreamReader(@"C:\temp\lotsoftext.txt"))
{
    while (!sr.EndOfStream) lines.Add(sr.ReadLine());
}
TextBox.Lines = lines.ToArray();

Я не рассчитывал, но это заняло не более секунды.

Когда я попытался сделать то же самое в расширенном текстовом поле, система зависла на мне. Он поместил текст в RichTextbox, но я отрастил бороду, ожидая его. Мое необразованное предположение могло бы состоять в том, что все это время тратится на разбор входных данных для разметки, поэтому лучше использовать простое текстовое поле для простого текста.

0 голосов
/ 21 декабря 2009

Звучит так, как будто вы, возможно, захотите написать свой собственный элемент управления для этого - тогда вы можете «оптимизировать» некоторые причины его медленности (например, вы можете знать, что строки никогда не переносятся, что приведет к упростить алгоритм расчета пропорций полосы прокрутки)

0 голосов
/ 18 декабря 2009

Зависит от типа данных.

Вы вряд ли найдете что-то лучшее для чистого текстового файла, как TextBox или RichtTextBox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...