Автоматическое изменение размера диалогового окна WinForms для соответствия внутреннему содержимому

Я пишу своего рода «общий диалог контейнера», который гарантирует, что все модальные диалоги в приложении будут иметь точно такой же «хром» (а именно, кнопки, значки и т. д.). Я придумал следующее:

альтернативный текст

containerPanel это всего лишь System.Windows.Forms.Panel.

Теперь я хочу следующее: для каждого диалога в приложении я хочу создать отдельный UserControl (не полноценный Form), а затем «разместить» его внутри этого общего диалога. Для этого мне нужно каким-то образом сделать этот диалог самонастраивающимся, чтобы он уменьшался или увеличивался в зависимости от размера элемента управления, размещенного внутри него.

Как я могу это сделать? Нужно ли мне какое-то управление макетом, или для этого есть какое-то особое магическое свойство?


person Anton Gogolev    schedule 02.11.2010    source источник


Ответы (2)


Существует логическое свойство autosize для windows.form.control . Если установлено значение true, это позволяет элементу управления автоматически изменять размер в соответствии с его содержимым.

person Ashwini Dhekane    schedule 02.11.2010
comment
Это также верно для Windows.Form. Он также имеет свойство AutoSize, которое позволяет ему уменьшаться и увеличиваться в соответствии с содержимым. - person Ashwini Dhekane; 02.11.2010
comment
Я бы также предложил использовать правильные якоря на панели и кнопки в форме. - person Bernard; 02.11.2010

Вы можете выполнить итерацию по коллекции Controls и найти нижний нижний угол каждого перечисляемого элемента управления, найти максимальное значение x и максимальное значение y и соответствующим образом установить ширину и высоту формы (контейнера).

person Daniel Mošmondor    schedule 02.11.2010