эффективность контроля доступа к текстовым полям и работа с локальной копией текста - PullRequest
0 голосов
/ 04 сентября 2010

Я программировал небольшое приложение, похожее на блокнот, с некоторыми дополнительными функциями.

Я использую расширенное текстовое поле в качестве основной области.Мой вопрос заключается в выполнении операций над содержимым текстового поля, таких как форматирование кода, выделение и т. Д., Которые могут потребовать чтения каждого символа и замены при необходимости.Перемещение назад по текстовым индексам иногда.Что было бы более эффективно для кнопки автоформатирования:

  • Непосредственное чтение по свойству textbox.text.Присоединение форматированных строковых символов в строителе строк и, наконец, возврат в текстовое поле (с помощью функции toString).

    или

  • Копирование всего содержимого в строку, чтение символа с помощьюперсонаж в новый stringbuilder ..... и, как указано выше.Разве этот метод не создает дополнительную копию большого текстового содержимого в текстовом поле?Или это более эффективно, чем повторный доступ к элементу управления textbox?

Также, если возможно, есть некоторые идеи по отслеживанию функций, скобок, фигурных скобок и т. Д. (Для формирования кода на лету)в коде текстового поля будет полезно.

1 Ответ

0 голосов
/ 04 сентября 2010

Поскольку вам придется анализировать код для форматирования, я бы не делал этого из самого текстового поля.Я бы скопировал все содержимое текстового поля в строку и прочитал символы из строки.Это связано с тем, что взаимодействие с любым элементом управления добавляет еще один уровень сложности для самой программы.Вместо того, чтобы обращаться к переменной String для непосредственного получения символа, вам нужно сначала получить доступ к элементу управления Textbox, который затем обращается к его внутреннему представлению текста, чтобы получить символ.Это дополнительный шаг, и для больших объемов текста он замедлит работу вашего приложения.

Чтобы выполнить фактический анализ и форматирование, вы можете написать свой собственный токенизатор и форматтер или использовать уже созданный.Я также не могу предложить большую помощь, но, к сожалению, это не так просто, как просто отслеживание скобок.Взгляните на Sourceforge или похожие сайты;у них могут быть средства форматирования, которые вы можете изучить, чтобы помочь вам создать свой собственный.

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