Проблема с изменением размера C#

У меня есть форма с прикрепленным к ней TableLayoutPanel и с TextBox, Image, TreeView и ListView внутри этого Panel.

Когда пользователь изменяет размер формы, эти элементы управления изменяются вместе с ним, но есть заметная задержка, если пользователь быстро изменяет размер или если пользователь максимизирует всю форму; задержка настолько значительна, что я смог сделать скриншот:

скриншот

Вы также можете заметить, что кнопка «Параметры» отображается дважды: один раз там, где она должна быть (в верхнем правом углу), и один раз в середине окна поиска (где она была до изменения размера формы). Это не должно произойти, но также вызвано задержкой.

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

Я отредактировал изображение из соображений конфиденциальности, но в списке было всего около 60 элементов.


person Zach Whitfield    schedule 18.10.2010    source источник
comment
TableLayoutPanel сам по себе медленный. Многие люди страдают от одной и той же боли :)   -  person honibis    schedule 18.10.2010


Ответы (2)


У вас есть какой-то специальный код, обрабатывающий перерисовку?

Если да, то используете ли вы метод BeginUpdate() и метод EndUpdate()?

Из msdn:

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

Эти методы (в зависимости от вашей ситуации) могут привести к тому, что компоненты не будут обновляться до тех пор, пока не произойдет изменение размера. Это может предотвратить двойное появление элементов на экране и ускорить изменение размера.

person TK.    schedule 18.10.2010

Может быть, у вас есть виртуальные элементы в вашем списке, и ваши элементы медленно пересчитываются? У вас есть код, который запускается, когда нужно перерисовать список?

person Daniel Mošmondor    schedule 18.10.2010