Остановка TextBox мерцает во время обновления

Если парсинг SAX обязателен, JAXP является хорошим выбором. Я предпочитаю парсинг DOM и использую jdom, который кажется намного легче мне.

14
задан Community 23 May 2017 в 12:19
поделиться

3 ответа

Проблема в том, что вы многократно и быстро добавляете (удаляете) по одному символу за раз. Одним из решений было бы буферизовать символы по мере их добавления и обновлять текстовое поле с большими интервалами (независимо от количества символов), например, каждые 250 миллисекунд.

Для этого потребуется:

  • иметь массив или стек символов, куда они добавляются;
  • иметь таймер, который будет вызывать делегата, который фактически будет выполнять обновление с символами, хранящимися в стеке

Другой вариант - использовать как каждые 250 мс, так и каждые 100 символов, что бы ни случилось раньше. Но это, вероятно, еще больше усложнит код без какой-либо ощутимой выгоды.

2
ответ дан 1 December 2019 в 07:52
поделиться

Вы установили двойной- буферизация в главном окне?

этот код в конструкторе после вызова InitializeComponent добавит двойную буферизацию и, возможно, уменьшит мерцание.

this.SetStyle ( ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);

3
ответ дан 1 December 2019 в 07:52
поделиться

Вы пробовали SuspendLayout () / ResumeLayout () во всех операциях обновления?

Затем вы также можете вызвать Clear () в текстовом поле переназначьте усеченный текст.

Если вы попытаетесь реализовать какую-либо программу просмотра файлов журнала, вы можете вместо этого использовать ListBox.

2
ответ дан 1 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: