Эквивалент пакета Swing в C # - PullRequest
10 голосов
/ 16 июля 2009

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

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

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

Ответы [ 3 ]

11 голосов
/ 19 августа 2009

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

И вуаля!

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

3 голосов
/ 16 июня 2011

Также в xaml:

<Window SizeToContent="WidthAndHeight" />
0 голосов
/ 24 ноября 2014

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

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...