Как предотвратить автоматическую прокрутку поля форматированного текста при выделении синтаксиса?

  • Язык = C #
  • Версия .NET = 3.5

Когда мой код выполняет выделение синтаксиса, пользователю отображается текст для автоматической прокрутки. Это становится серьезной проблемой, когда в поле форматированного текста содержится несколько сотен строк текста. Итак, как я могу программно изменить цвет текста, не заставляя пользователя видеть что-либо, кроме изменения цвета?

Спасибо за любую помощь.


person Mackenzie    schedule 30.06.2009    source источник
comment
Не могли бы вы объяснить, как вы выполняете подсветку синтаксиса? Я хотел бы реализовать эту функцию в продукте, над которым работаю сам. Ваше здоровье.   -  person JSmyth    schedule 30.06.2009
comment
В настоящий момент мой алгоритм состоит из шести шагов. 1) Запомните текущее положение каретки. 2) Отключить обновления текстового поля. 3) Найдите текст, который нужно выделить. 4) Выделите текст соответствующим цветом. 5) Повторяйте шаги 3 и 4, пока не будет выделен весь текст, который необходимо выделить. 6) Установите курсор в правильное положение. Этот алгоритм требует доработки. Медленно обрабатывает большие объемы текста. Однако только выделение текста, который видит пользователь, должно решить проблему с производительностью.   -  person Mackenzie    schedule 02.07.2009


Ответы (1)


Вы пробовали что-то подобное:

Save selstart position. 
Disable updates to the text box.  
Apply syntax highlighting.
Set selstart to saved value.  
Enable updates.
person Argalatyr    schedule 30.06.2009
comment
Я сделал все, кроме отключения обновлений и включения обновлений. Теперь, когда я это сделал, все работает нормально. Спасибо. - person Mackenzie; 30.06.2009
comment
Я осознал проблему, хотя сам не говорю на C #. - person Argalatyr; 30.06.2009