Я создал форму на C # (VS2010), которая содержит (среди прочего) элемент управления текстовым полем. Текстовое поле может в какой-то момент содержать большой объем данных (~ 3 миллиона символов).
При прокрутке или перемещении формы никаких проблем не возникает, но когда форма минимизируется и восстанавливается снова, запускается последовательность перерисовки (я полагаю), которая вызывает большую задержку около 5-10 секунд для перерисовки формы.
Я уже пробовал несколько решений:
Использование двойного буфера - согласно тому, что я читал, двойная буферизация применяется только к самой форме, а не к ее элементам управления.
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.UserPaint, true);
Отключение перерисовки текстового поля после сворачивания с помощью:
SendMessage(this.my_textBox.Handle, WM_SETREDRAW, false, 0);
и включение обратно после восстановления формы. Я заметил, что задержка перерисовки формы существует также, если я не включаю повторно перерисовку текстового поля.Ручной двойной буфер с использованием растрового изображения - результаты такие же, как # 1.
Я где-то читал, что эта проблема может быть связана с элементом управления текстовым полем, который пытается сжать или настроить объем данных, но не может его переопределить.
Раньше у меня был такой же проект в MFC, но не было проблем с перерисовкой или задержками.
Посоветуйте, пожалуйста, как решить эту проблему.