Създадох формуляр в 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, но не срещнах никакви проблеми с пребоядисване или изоставане там.
Моля, посъветвайте ме как да разреша този проблем.