Лучший макет пользовательского элемента управления WinForms со статическим и динамическим содержимым? - PullRequest
3 голосов
/ 02 февраля 2009

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

Этот пользовательский элемент управления будет размещен в форме со следующими требованиями: a) Начальный размер формы будет пытаться вписаться в максимальную часть динамического содержимого. б) При изменении размера формы размер элемента управления должен быть соответственно изменен.

Я играл с различными привязками, стыковками и автоматическими размерами, и я не совсем понимаю, как это работает так, как я хочу. Иногда запутывается прокрутка, иногда что-то еще.

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

Ответы [ 3 ]

2 голосов
/ 03 февраля 2009

Мне удалось удовлетворить требования. Вот мое решение:

Динамическая панель привязана к верхней и нижней части элемента управления. Это не AutoSize, он вручную меняет свои MaximumSize и PreferredSize после изменения содержимого.

Форма содержит форму, используя:

        cntrl.AutoSize = true;
        cntrl.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
        cntrl.Dock = System.Windows.Forms.DockStyle.Fill;

Форма подписывается на событие пользовательского элемента управления, которое уведомляет об предпочтении Height и соответствующим образом изменяет свою собственную высоту.

1 голос
/ 02 февраля 2009

Я бы пошел с панелью макета таблицы. Вы можете указать две строки на один столбец с точным размером для кнопок в верхней части и заполнить остальные с нижней. Затем вставьте обычную панель или панель потока для динамического содержимого в этой области.

0 голосов
/ 02 февраля 2009

Не зная специфики вашей проблемы, я обнаружил, что несколько сплит-контейнеров, заполненных заливкой, с одной фиксированной панелью и / или фиксированным ползунком обычно создают действительно удобный опыт изменения размера. Вы также можете очень эффективно свернуть панели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...