Я использую «FlowLayoutPanel» для хранения сложного графического интерфейса. Эта структура содержит два типа UserControls:Зачем рисовать FlowLayoutPanel со сложными пользовательскими элементами управления?
- «S» Простой U.C (постоянный размер)
- «C» Другой FlowLayoutPanel, который может иметь те напечатать, как Чайлдс .. и так далее.
Когда у меня есть такой структуры:
1.С
- S
- S
С:
1.S
2 .C
1.S 2.S
Она занимает около 15 секунд, чтобы сделать этот контроль, Каждый раз, когда этот контроль visble изменяет GUI не застревают на 15 + - секунд до его рендеринга целых компонентов.
* Примечание 1: Сложный элемент управления «C» имеет размер, который содержит FlowLayoutPanel. все «внутренние» компоненты «С» изменяют свою высоту при добавлении детей. главный \ master-контроль «C» получил размер исправления и имеет полосу прокрутки.
* Примечание 2: Я продлил FlowLayoutPanel иметь некоторые двойной буферизации оптимизаций:
общественного запечатанный класс FlowLayoutPanelEx: FlowLayoutPanel {
public FlowLayoutPanelEx()
: base()
{
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
}
protected override void OnScroll(ScrollEventArgs se)
{
this.Invalidate();
base.OnScroll(se);
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // WS_CLIPCHILDREN
return cp;
}
}
}
Сколько элементов управления находится в FLP? – TaW
5 Простой и 3 комплекс. 8 итогов. Именно в том порядке, в котором я писал в вопросе. –
Рендеринг 8 элементов управления __not__ занимает 15 секунд. Время должно идти куда-то еще. Почему вы делаете Invalidate в свитке? Кажется довольно странным для меня .. – TaW