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

Я разрабатываю приложение Windows Forms (.NET 2.0, VS 2005). У меня есть форма, которая по существу содержит панель, динамически изменяемую с помощью формы:

this.panel1.Dock=DockStyle.Fill;

Эта панель просто используется в качестве контейнера. Во время выполнения добавляется настраиваемый элемент управления:

UserControl uc=new UserControl();
panel1.Controls.Add(uc);
uc.Dock=DockStyle.Fill;

Поскольку этот пользовательский элемент управления имеет требование минимального размера, я хочу, чтобы полосы прокрутки отображались на панели, если она становится слишком малой, чтобы показать весь элемент управления:

this.panel1.AutoScroll=true;

Это не работает. Я попытался изменить размер панели, используя свойство Anchor, а не свойство Dock, но безрезультатно.

Ответы

Ответ 1

Не подключайте свой пользовательский элемент управления. Вместо этого используйте свойство Anchor. (Якорь со всех четырех сторон). Устанавливает пользовательское свойство MinimumSize Задайте свойство AutoScrollMinSize панели

Панель прокрутки панели не появится, если вы не установили ее свойство AutoScrollMinSize. Настройка пользовательского элемента управления Dock to Fill, похоже, скрывает панели прокрутки панели.

Ответ 2

После InitializeComponent в диалоговом окне я сделал это и, похоже, работал:

tableLayoutPanel1.AutoScrollMinSize = tableLayoutPanel1.GetPreferredSize(new Size(1, 1));

У меня есть куча подпанелей в таблице. Все строки и столбцы установлены в AutoSize. По какой-то причине элемент управления недостаточно умен, чтобы определить, какой размер имеет размер прокрутки.

Ответ 3

Panel.AutoScroll = * True работает - СЕЙЧАС! Я играл и играл с идеями выше, как для панели, так и для пользователя, и, наконец, reset все возвращается к умолчанию, устанавливает Autoscroll на панели и... вуаля! как-то снова работает... go figure...