Как автоматически изменить размер и настроить элементы управления формы с изменением разрешения - PullRequest
43 голосов
/ 22 ноября 2010

Я заметил, что некоторые приложения меняют положение своих элементов управления, чтобы максимально отрегулировать их в разрешении. Если окно максимально развернуто, они устанавливаются таким образом, что по всему графическому интерфейсу выглядит сбалансированным.Мой вопрос заключается в том, можно ли сделать или реализовать эту функцию в Visual Studio 2010 C #?

Ответы [ 8 ]

61 голосов
/ 22 ноября 2010

Используйте Док и Якорь свойства. Здесь хорошая статья. Обратите внимание, что они будут обрабатывать изменения при максимизации / минимизации. Это немного отличается от разрешения экрана, но это будет соответствовать той же идее.

18 голосов
/ 25 ноября 2014

Используйте их комбинации, чтобы получить желаемый результат:

  1. Установите для свойства Anchor значение Нет, размеры элементов управления не будут изменены, они только сместят свою позицию.

  2. Установите для свойства Anchor значение Top + Bottom + Left + Right, размеры элементов управления будут изменены, но они не изменят свое положение.

  3. УстановитеMinimum Size формы для правильного значения.

  4. Установить Dock свойство.

  5. Используйте событие Form Resize, чтобы изменить то, что выхочу

Я не знаю, как повлияет размер шрифта (метка, текстовое поле, поле со списком и т. д.) в (1) - (4), но им можно управлять в (5).

9 голосов
/ 16 сентября 2012
float widthRatio = Screen.PrimaryScreen.Bounds.Width / 1280;
float heightRatio = Screen.PrimaryScreen.Bounds.Height / 800f;
SizeF scale = new SizeF(widthRatio, heightRatio);
this.Scale(scale);
foreach (Control control in this.Controls)
{
control.Font = new Font("Verdana", control.Font.SizeInPoints * heightRatio * widthRatio);
}
2 голосов
/ 23 ноября 2010

.. и для обнаружения изменения в разрешении, чтобы справиться с ним (если вы используете Docking and Anchoring, как предложил SwDevMan81), используйте событие SystemEvents.DisplaySettingsChanged в Microsoft.Win32 .

0 голосов
/ 29 сентября 2016
this.WindowState = FormWindowState.Maximized;
0 голосов
/ 26 февраля 2015
private void MainForm_Load( object sender, EventArgs e ) 
     { 
        this.Size = Screen.PrimaryScreen.WorkingArea.Size 
     }
0 голосов
/ 14 июня 2013

в событие загрузки формы добавить эту строку

this.WindowState = FormWindowState.Maximized;
0 голосов
/ 04 февраля 2013

добавить этот код при загрузке страницы сделать для всех элементов управления или добавить все элементы управления в контейнерах

int x;
Point pt = new Point();
x = Screen.PrimaryScreen.WorkingArea.Width - 1024;
x = x / 2;
pt.Y = groupBox1.Location.Y + 50;
pt.X = groupBox1.Location.X + x;
groupBox1.Location = pt;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...