полоса прокрутки TableLayoutPanel c # - PullRequest
1 голос
/ 15 июня 2011

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

Я попытался установить свойство autoscroll наОсновная панель для истины и стыковки и / или установки максимального размера.Вместо этого контроллер пытается вписать ВСЕ Panel в форму, поэтому изменяя размер его внутренних компонентов и сжимая их все вместе, вместо создания полосы прокрутки для прокрутки моей Panel.

Выполнитьребята, вы знаете, что я могу делать неправильно?

Спасибо.

Хосе

PS: я использую VS 2010

Ответы [ 4 ]

2 голосов
/ 23 июля 2012

Однажды у меня возникла та же проблема, и я обнаружил, что проблема заключалась в том, что у меня был установлен параметр "MinimumSize" для TableLayoutPanel.Это привело к тому, что элемент управления сохранял минимальную высоту независимо от ограничений Dock и / или Anchor, что препятствовало правильной работе функции AutoScroll.Поскольку эта функция основана на простой проверке координат Y всех дочерних элементов управления по высоте этого элемента управления, полоса прокрутки не появлялась, несмотря на то, что дочерние элементы управления TableLayoutPanel «исчезали» из поля зрения из-за родительского элементаобласть обрезки.

Другими словами, проверьте свойство MinimumSize TableLayoutPanel и убедитесь, что оно пустое.

1 голос
/ 22 января 2015

Поздний ответ, но я недавно боролся со сложным макетом и искал решение, чтобы моя прокрутка работала на экране со слишком большим количеством полей.Честно говоря, лучший дизайн должен избегать этой проблемы в 99% случаев, но иногда ваши руки просто связаны.

Проблема

Проблема заключается в том, что если вы 'слишком глубоко вложенные в несколько сеток, групп и панелей, они перестают правильно сообщать родительским элементам управления о том, что их содержимое превысило размер текущего экрана.На самом деле проблема, вероятно, заключается в том, что все элементы управления настроены на заливку дока и do вписываются в родительский элемент управления, поэтому элемент управления верхнего уровня не знает, что содержимое его пра-пра-пра-праэлементы управления Grandchild не подходят.

Решение

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

MainPanel.AutoSize = true;
MainPanel.AutoScrollMinSize = new Size(400, 500);
1 голос
/ 30 июля 2011

У меня было то же самое, что случилось с моим проектом.Все мои элементы управления были сжаты внутри TableLayoutPanel.В моем случае многие элементы управления отображались как ColumnStyle.Percent.Переключение на ColumnStyle.Autosize было нужным мне исправлением.

Полагаю, вы также установили эти свойства, но на всякий случай мои TableLayoutPanels также используют следующие настройки:

AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
AutoScroll = true;
1 голос
/ 15 июня 2011

Может быть это поможет.

если это все еще не работает, попробуйте поместить панель и затем поместите tableLayoutPanel в эту панель. Установите значение true для свойства autoScroll панели.

...