使表单适合各种尺寸的屏幕

时间:2018-05-04 05:13:06

标签: c# winforms user-interface user-controls

我在c#中完成了我的第一个Windows窗体应用程序的开发,但是当在具有不同屏幕尺寸的另一台计算机上运行它时,控件不在它们应该的位置。

我用过

this.WindowState = FormWindowState.Maximized;

最大化屏幕,但在这样做时,表格只是在底部延伸,控件保持在同一位置。

2 个答案:

答案 0 :(得分:4)

使用锚点停靠属性作为您需要的控件。

Dock :Dock属性强制控件粘贴到父窗体(或控件)的某个边缘,如胶水。

例如:

如果您有一个图像框,并且您将底座设置在右下角,则在最大化窗口后,图像框将保持在右下角。

你也可以使用"填充"到你的 Dock 属性,使大小也动态取决于窗口大小。

答案 1 :(得分:0)

HI用于响应式设计 第一个创建下面的课程

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

这将使表单尽可能响应,以及创建系统默认字体