AutoScrollMinSize глюки на форме Свернуть / Развернуть - PullRequest
1 голос
/ 23 марта 2012

У меня есть пользовательский UserControl с функцией, которая обновляет AutoScrollMinSize при каждом изменении размера элемента управления. Для этого элемента управления установлено значение DockStyle.Fill внутри родительской формы с некоторыми другими элементами управления.

Моя проблема в том, что когда я минимизирую или увеличиваю форму контейнера, он отправляет два последовательных события изменения размера, и по какой-то причине мои полосы прокрутки исчезают.

Когда я изменяю размеры формы путем изменения границы формы, полосы прокрутки обновляются идеально каждый раз. Только когда я минимизирую или максимизирую, полосы прокрутки исчезают.

Я пытался подписаться на OnResize и OnSizeChanged по отдельности или вместе, и у меня возникла та же проблема. Я пытался установить AutoScrollMinSize только в том случае, если новое значение не равно текущему значению (в случае некоторого сбоя в настройке его дважды на одно и то же значение), но у меня все еще есть эта проблема.

Мои стили управления следующие:

this.SetStyle(ControlStyles.DoubleBuffer |
              ControlStyles.AllPaintingInWmPaint |
              ControlStyles.UserPaint |
              ControlStyles.ResizeRedraw, true);

this.DoubleBuffered = true;
this.AutoScroll = true;

1 Ответ

0 голосов
/ 30 марта 2012

Не идеальное решение, но я обнаружил, что вызов PerformLayout () после установки AutoScrollMinSize заставляет показывать полосы прокрутки.

AutoScrollMinSize = newSize;
PerformLayout();
Invalidate();
...