Я предлагаю изменить размер формы, используя ее PreferredSize свойство. Когда вы добавили новые элементы управления в форму, и эти элементы управления не помещаются в клиентскую область, PreferredSize
обновляется, чтобы отразить новый размер, необходимый для их содержания, но ограниченный установленными MaximumSize
формы.
Затем используйте метод CenterToScreen () , чтобы центрировать форму на текущем экране.
CenterToParent () , предложенный Хансом Пассантом в комментариях, имеет тот же эффект, если форма не связана с какой-либо другой формой, т. Е. Если она не отображается с использованием метода .Show(this)
перегрузки; в противном случае он центрируется на Форме владельца.
Настройка AutoSizeMode = AutoSizeMode.GrowAndShrink
(или вызов метода SetAutoSizeMode()
) и , тогда настройка AutoSize = true
может привести к нежелательным результатам. Более заметным является то, что вы больше не можете изменять размер своей формы обычными средствами. Площадь, занимаемая StatusStrip
, не может считаться et c.
В качестве примечания: если ваше приложение не является DpiAware, размеры экрана и размер вашей формы могут отличаться от ожидаемых. Если это не так, прочитайте об этом здесь:
Поддержка высокого DPI в Windows Формах
Эти заметки о Screen и VirtualScreen могут также будет полезно:
Итак, добавьте свои элементы управления в форму (возможно, в обработчик Load
), затем:
var screen = Screen.FromHandle(this.Handle);
this.MaximumSize = new Size(screen.WorkingArea.Width, screen.WorkingArea.Height);
this.ClientSize = this.PreferredSize;
this.CenterToScreen();