В моем приложении мне действительно нужно было разместить множество элементов управления (ярлык, текстовое поле, domainupdown) в хорошем порядке. Поэтому я пошел вперед и использовал некоторые вложенные TableLayoutPanel
. Проблема заключается в том, что эта форма реагирует очень медленно на большинство событий (изменение размера, максимизация, минимизация и ...), чтобы элементы управления в таблицах изменялись в размерах до 5 секунд, перерисовывались до нового размера формы.TableLayoutPanel очень медленно реагирует на события
Я сейчас пашу пальцем в глаза! Если эта форма медленная на моем домашнем ПК (i7 @ 4GHz и хорошая графическая карта), что он будет делать, чтобы работать на старом компьютере P4 на работе?
Я даже пытался использовать приведенный ниже код, но он абсолютно ничего не делает, если он не замедляет его больше!
private void FilterForm_ResizeBegin(object sender, EventArgs e)
{
foreach(TableLayoutPanel tlp in panelFilters.Controls)
{
if(tlp != null)
{
tlp.SuspendLayout();
}
}
}
private void FilterForm_ResizeEnd(object sender, EventArgs e)
{
foreach (TableLayoutPanel tlp in panelFilters.Controls)
{
if (tlp != null)
{
tlp.ResumeLayout();
}
}
}
Пожалуйста, дайте мне знать, если есть трюк, чтобы сделать TableLayoutPanel работать быстрее ... или если вы знаете, лучший подход к улегся около ста управления хорошо выровнены.
Наличие меньшего количества элементов управления будет окончательным решением этой проблемы. – LarsTech
Это было бы идеально ... Но есть моменты, когда вам действительно нужны эти элементы управления! –
Существуют способы ограничения элементов управления. Иногда вы можете исключить ярлыки и просто нарисовать текст в событии рисования. Возможно, рассмотрим [этот ответ] (http://stackoverflow.com/a/8930446/719186), поскольку это звучит так, как будто это может быть одна и та же проблема. Кстати, вам, вероятно, не нужно проходить через элементы управления, как вы, попробуйте просто использовать 'panelFilters.SuspendLayout();' и посмотреть, что произойдет. – LarsTech