Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Zach WhitfieldОтветов: 2

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

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

скриншота>

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

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

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

  • TableLayoutPanel сам по себе медленный. Многие люди страдают от одной и той же боли :) honibis 18.10.2010

listviewwinformsresize

Ответы

Ответ 1 · рейтинг 1 · TK.

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

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

Из msdn:

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

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

Ответ 2 · Daniel Mošmondor

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы