TableLayoutPanel работает медленно из-за автоматического изменения размера и / или вложенности TableLayoutPanels?

У меня есть TableLayoutPanel, где первый «слой» имеет 1 столбец и десять строк, некоторые из этих строк содержат либо UserControl, либо другой TableLayoutPanel с 2 или 3 столбцами и несколькими строками. Один или два из них содержат еще одну TableLayoutPanel, но это все. Таким образом, это максимум 3 «уровня» вложенных панелей TableLayoutPanels. Для большинства из них установлено автоматическое изменение размера, поскольку некоторые элементы управления UserControl могут изменять свой размер. Когда форма, содержащая такой вложенный TableLayoutPanel, UserControls «мерцает», похоже, что они загружаются очень медленно.

  • Я использую слишком много автоподбора?
  • Или моя панель слишком вложена?

person Verena Haunschmid    schedule 18.02.2013    source источник
comment
Возможный дубликат TableLayoutPanel очень медленно реагирует на события   -  person Jim Fell    schedule 08.03.2019


Ответы (1)


Я не думаю, что мерцание имеет какое-либо отношение к «автоматическому изменению размера» или «вложенным панелям».

Пожалуйста, обратитесь к другой ссылке «SO»: Как избежать мерцания в TableLayoutPanel в c # .net

Приостановите макет, пока не добавите все элементы управления.

TableLayoutPanel panel = new TabelLayoutPanel();

panel.SuspendLayout();

// NOW add controls (including nested-controls) -- do autosizing etc

panel.ResumeLayout();

Также посмотрите на использование двойной буферизации. Вам нужно будет создать подкласс TableLayoutPanel. См. пример.

Надеюсь это поможет.

person MukeshAnAlsoRan    schedule 28.03.2013