Элемент управления для просмотра файла с большим количеством текста - PullRequest
1 голос
/ 21 июля 2009

Существует ли элемент управления WinForms, похожий на TextBox, который может отображать большой объем текста (сотни мегабайт) в режиме только для чтения? Конечно, он должен работать без загрузки всего файла в память сразу.

Я пытаюсь реализовать это сам, используя стандартный TextBox, обрабатывая события прокрутки и клавиатуры и считывая количество текста, необходимое для заполнения видимого «окна». Но он все еще довольно глючный, и я чувствую, что заново изобретаю колесо.

Ответы [ 5 ]

2 голосов
/ 29 октября 2010

Я думаю, что у вас больше шансов, используя Scintilla или его оболочку Scintilla.Net . Я думаю, что это не работает так идеально, но делает его намного лучше, чем TextBox или RichtTextBox.

2 голосов
/ 21 июля 2009

Загрузка «сотен мегабайт» текста в элемент управления звучит как очень, очень плохая идея в отношении памяти и производительности; это, вероятно, приведет к краху вашей программы. В любом случае, как вы собираетесь читать все эти миллионы строк? Тебе действительно нужен весь текст? Mabye, было бы лучше, если бы у вас был буфер и загружалось небольшое количество текста в RichTextBox, а когда вы достигли конца (или даже почти до конца), просто загрузите следующие 100 (или любое другое количество) строк. Или, если вы что-то ищете, по ключевым словам и введите соответствующий текст в RichTextBox. Это действительно зависит от того, что вы планируете делать.

0 голосов
/ 14 сентября 2012

Отображение текста по частям ..... 10.000 символов в каждом текстовом поле .... Я недавно обнаружил, что если вы увеличите размер текстового поля, программа будет работать быстрее при редактировании текста или прокрутке ...

0 голосов
/ 21 июля 2009

Нет такого контроля, насколько я знаю. Давным-давно я написал аналогичный элемент управления, но для Delphi, но принципы те же (читать ограниченный блок данных и отображать его). Поэтому, если вы решили реализовать это самостоятельно, а затем отойти от элемента управления TextBox, он не очень подходит для таких нужд. Я считаю, что вы должны создать нового потомка Control со всей пользовательской окраской. Это не очень легко, но это единственный правильный путь.

0 голосов
/ 21 июля 2009

Я не знаю такого элемента управления (RichTextBox работает медленно, когда вы помещаете в него одну страницу википедии, поэтому я совершенно уверен, что он загружает все в память).

Мой опыт работы с winforms заключается в том, что вам часто приходится настраивать элементы управления по умолчанию, чтобы получить желаемое поведение, даже если оно кажется тривиальным (обнуляемый DateTime, кто-нибудь?). С другой стороны, они предлагают хорошую основу для быстрого добавления одного или двух простых вариантов поведения без необходимости делать все самостоятельно.

Я использовал элементы управления winforms в течение нескольких месяцев и часто заканчивал тем, что реализовал определенные (некоторые тривиальные, другие сложные) поведения в моих собственных элементах управления.

...