Сделать формы подходящими для экрана любого размера - PullRequest
0 голосов
/ 04 мая 2018

Я закончил разработку своего первого приложения windows form на c #, но при запуске его на другом компьютере с другим размером экрана элементы управления оказались не там, где они должны быть.

Я использовал

this.WindowState = FormWindowState.Maximized;

, чтобы развернуть экран, но при этом форма просто расширяется внизу, а элементы управления остаются в том же положении.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

HI для адаптивного дизайна 1-й создать ниже класса

 public class Resolution
    {
        float heightRatio = new float();
        float widthRatio = new float();
        int standardHeight, standardWidth;
        public void ResizeForm(Form objForm, int DesignerHeight, int DesignerWidth)
        {
            standardHeight = DesignerHeight;
            standardWidth = DesignerWidth;
            int presentHeight = Screen.PrimaryScreen.WorkingArea.Height;//.Bounds.Height;
            int presentWidth = Screen.PrimaryScreen.Bounds.Width;
            heightRatio = (float)((float)presentHeight / (float)standardHeight);
            widthRatio = (float)((float)presentWidth / (float)standardWidth);
            objForm.AutoScaleMode = AutoScaleMode.None;
            objForm.Scale(new SizeF(widthRatio, heightRatio));
            foreach (Control c in objForm.Controls)
            {
                if (c.HasChildren)
                {
                    ResizeControlStore(c);
                }
                else
                {
                    c.Font = new Font(c.Font.FontFamily, c.Font.Size * heightRatio, c.Font.Style, c.Font.Unit, ((byte)(0)));
                }
            }
            objForm.Font = new Font(objForm.Font.FontFamily, objForm.Font.Size * heightRatio, objForm.Font.Style, objForm.Font.Unit, ((byte)(0)));
        }

        private void ResizeControlStore(Control objCtl)
        {
            if (objCtl.HasChildren)
            {
                foreach (Control cChildren in objCtl.Controls)
                {
                    if (cChildren.HasChildren)
                    {
                        ResizeControlStore(cChildren);

                    }
                    else
                    {
                        cChildren.Font = new Font(cChildren.Font.FontFamily, cChildren.Font.Size * heightRatio, cChildren.Font.Style, cChildren.Font.Unit, ((byte)(0)));
                    }
                }
                objCtl.Font = new Font(objCtl.Font.FontFamily, objCtl.Font.Size * heightRatio, objCtl.Font.Style, objCtl.Font.Unit, ((byte)(0)));
            }
            else
            {
                objCtl.Font = new Font(objCtl.Font.FontFamily, objCtl.Font.Size * heightRatio, objCtl.Font.Style, objCtl.Font.Unit, ((byte)(0)));
            }
        }
    }

затем, когда вы добавите любую форму, добавьте панель управления в форму и закрепите это сформировать ниже
InitializeComponent ();

Напишите ниже код

    this.WindowState = FormWindowState.Maximized;
    int screenWidth = Screen.PrimaryScreen.Bounds.Width;
    int screenHeight = Screen.PrimaryScreen.Bounds.Height;
    Resolution objFormResizer = new Resolution();
    objFormResizer.ResizeForm(this, screenHeight, screenWidth); 

это сделает форму максимально отзывчивой, а также создаст системный шрифт по умолчанию

0 голосов
/ 04 мая 2018

Используйте якорь и док Свойство для элемента управления вам нужно.

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

Например:

Если у вас есть Image Box, и вы установите док-панель в нижнем правом углу, после того, как вы развернете окна, Image Box будет оставаться в правом нижнем углу.

Вы также можете использовать «Fill» для вашего Dock Свойство, чтобы сделать размер также динамическим, зависит от размера окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...