Подтвердить что ты не робот

Как автоматическое изменение размера и настройка элементов управления формы с изменением разрешения

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

4b9b3361

Ответ 1

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

Ответ 2

Используйте их для получения желаемого результата:

  • Установите для свойства Anchor значение None, элементы управления не будут изменены, они только сдвинут свое положение.

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

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

  • Задайте свойство Dock.

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

Я не знаю, как размер шрифта (label, textbox, combobox и т.д.) будет затронут в (1) - (4), но его можно контролировать в (5).

Ответ 3

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);
}

Ответ 4

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

Ответ 5

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

this.WindowState = FormWindowState.Maximized;

Ответ 6

Здесь я люблю использовать https://www.netresize.net/index.php?c=3a&id=11#buyopt. Но это платная версия.

Вы также можете получить их исходные коды, если купите 1 лицензию на сайт (Unlimited Developers).

Как только я нахожу пакетное решение nuget.

Ответ 7

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

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;

Ответ 8

private void MainForm_Load( object sender, EventArgs e ) 
     { 
        this.Size = Screen.PrimaryScreen.WorkingArea.Size 
     }

Ответ 9

this.WindowState = FormWindowState.Maximized;