У меня есть проект winforms .net 4.0, в котором мне нужно программно установить границы (иначе размер) окна (System.Windows.Forms.Form) и добавить/удалить элементы управления в/из него, в то же время, без видимого мерцания . Размер формы не изменяется пользователем, единственное место, где ее размер изменяется, это вызов this.Bounds = foo / this.DesktopBounds = foo / ....
Я уже читал о предотвращении мерцания с помощью отправки WM_SETREDRAW с помощью p/invoke, а также о SuspendRedraw/SuspendLayout и др. Я все еще вижу, как происходит мерцание, и прибил проблему к:
Windows перерисовывает форму при установке ее границ/размера, даже если перерисовка отключена.
Я предполагаю, что это вызвано не самой формой, а каким-то оконным менеджером?
Итак, есть ли способ абсолютно предотвратить перерисовку чего-либо при любых обстоятельствах, а затем повторно включить перерисовку и обновление вручную после этого? Типа «заморозить окно и отобразить снимок», изменить материал и «заменить снимок обновленным окном (включая положение и размер) за один раз»?
Спасибо, ура, Тим