Эквивалент пакета Swing в С#

Я разрабатываю быстрое приложение на С#. Одна вещь, которую я хочу сделать, это эквивалент Swing (java) pack(). Это вызов, который позволяет мне говорить в форме (Frame в Java), изменять размер до размера суммы компонентов внутри себя.

Я искал и искал (компоненты меняются динамически, поэтому я не могу просто скопировать форму в нужный размер), но я не могу найти эквивалентный метод в С#.

Кто-нибудь знает, что называется?

Ответ 1

Вам даже не нужно писать код, чтобы "упаковать" форму. В конструкторе форм установите для свойства AutoSize значение AutoSize и установите для свойства AutoSizeMode значение GrowAndShrink, повторите это для любых элементов управления в форме, которые также могут изменить размер.

И вуаля!

Во время выполнения (только) форма будет динамически изменять размеры для всех элементов управления. Если вы хотите, чтобы он находился на небольшом расстоянии от элементов управления, чтобы элементы управления не "прилипали" к краям, вы можете установить свойство Padding (я бы рекомендовал по крайней мере значение 12,12,12, 12).

Ответ 2

Также в xaml:

<Window SizeToContent="WidthAndHeight" />

Ответ 3

Другое решение, доступное только в том случае, если изображение меньше экрана:

Form frm = new Form();
PictureBox pbx = new PictureBox();
pbx.Image = Image.FromFile( _imagePath.Text );
pbx.Dock  = DockStyle.Fill;
frm.Controls.Add( pbx );
frm.Size = pbx.Image.Size;
frm.Show();