Глюки AutoScrollMinSize при сворачивании/разворачивании формы

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

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

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

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

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

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

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

person Trevor Elliott    schedule 23.03.2012    source источник


Ответы (1)


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

AutoScrollMinSize = newSize;
PerformLayout();
Invalidate();
person Trevor Elliott    schedule 30.03.2012