Проблемы с производительностью при использовании нескольких пользовательских элементов управления в TableLayoutPanel в WC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с производительностью при использовании нескольких пользовательских элементов управления в TableLayoutPanel в W

Сообщение Anonymous »

В настоящее время я разрабатываю приложение WinForms и сталкиваюсь с проблемами производительности при динамическом добавлении нескольких экземпляров UserControl в TableLayoutPanel. В частности, у меня есть около 141 экземпляра пользовательского элемента управления, который мне нужно отобразить на панели.
Вот упрощенная версия моего кода:

Код: Выделить всё

public void FillPanel()
{
panel.Controls.Clear();
panel.SuspendLayout();

foreach (var group in )
{
Label groupLabel = new Label
{
Text = $"FlowLayoutPanel Items",
Location = new Point(0, currentY),
AutoSize = true
};

panel.Controls.Add(groupLabel);
currentY += groupLabel.Height ;

FlowLayoutPanel flowPanel = new FlowLayoutPanel
{
FlowDirection = FlowDirection.LeftToRight,
Location = new Point(0, currentY),
Size = new Size(panel.Width, CalculateHeight()),
AutoSize = false,
WrapContents = true
};

foreach (var item in group)
{
var myUserControlPanel = new myUserControlPanel(item);
flowPanel.Controls.Add(myUserControlPanel);
}

panel.Controls.Add(flowPanel);
currentY += flowPanel.Height + 10;
}

panel.AutoScroll = true;
panel.ResumeLayout();
}
Существует около 141 элемента управления (myUserControlPanel), который можно добавить как минимум к 5 панелям FlowLayoutPanel (~ 25 для каждого).
Я уже пробовал:
-DoubleBuffering-Добавьте myUserControlPanel в List и затем один раз в Panel.Controls.Add(listToAdd.ToArray());
Метод FillPanel() выполняет все свои задачи за 50 мс. После этого установка для свойства Visible формы значения true займет дополнительные 5 секунд для отображения формы и всех ее элементов управления.
Существует ли лучшая стратегия макета, которая повысила бы производительность?

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-winforms
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»