Эквивалент пакета 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();