Прорисовка формы с TableLayoutPanel
От: Sealsh  
Дата: 21.03.10 10:10
Оценка:
Ситуация:
Visual Studio 2008 SP1, Проект WinForms, .Net Framework 2.0

У меня на форме находится TableLayoutPanel, 9 строк, 7 столбцов, размеры всех столбцов и строк заданы в процентах. Некоторые ячейки пустые, в некоторых по одному контролу, некоторые контролы растянуты с помощью RowSpan и ColumnSpan на несколько ячеек. Все контролы — стандартные (Label, LinkButton, Button, DatagridView). У всех контролов установлено либо свойство Dock в Fill, либо привязаны с момощью Anchor. TableLayoutPanel имеет свойство BackColor, установленное в Transparent, для того, чтобы было видно рисунок, соответствующий свойству BackgroundImage формы. Свойство BackgroundImageLayout формы установлено в Stretch.
И во время разработки и во время выполнения все, что касается изменения размеров, работает превосходно — размеры ячеек и, соответственно, контролов изменяются так как надо, НО с одной БОЛЬШОЙ неприятностью отображения (ПРОРИСОВКИ):
При каждом изменении размера формы происходит ее ужасная дерготня — думаю, что прорисовывается каждый элемент, находящийся в таблице. Зрелище ужасное:
1. при перетаскивании границы формы (при изменении размера все элементы остаются на своих местах, изменяются размеры границы формы.
2. сразу после отпускания границы формы после установки нужного размера какое-то время на форме все начинает моргать — рисунок на самой форме, границы элементов управления, но почти все элементы управления не мигают, их размеры остаются такими,какими были до изменения размеров формы. Длится это около трех секунд.
3. резко все перестает моргать, все контролы встают на правильные места.

Вопрос: как избавиться от мигания элементов управления и мигания заднего плана формы?

21.03.10 22:43: Перенесено из '.NET'
Re: Прорисовка формы с TableLayoutPanel
От: Kalina9001  
Дата: 22.03.10 10:41
Оценка:
Попробуй выставить DoubleBuffered у формы
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
Re[2]: Прорисовка формы с TableLayoutPanel
От: Sealsh  
Дата: 22.03.10 12:02
Оценка:
Здравствуйте, Kalina9001, Вы писали:

K>Попробуй выставить DoubleBuffered у формы


я пробовал, не помогло. В общем решил тем, что на время отрисовки при загрузке формы, при ресайзе, убираю с нее картинку. когда все эти процессы завершаются — возвращаю назад. Специально для хранения картинки завел на форме ImageList
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.