根据屏幕分辨率调整表单控件的大小

时间:2014-04-29 11:01:49

标签: c# .net windows

我正在设计一个dotnet Window应用程序,其分辨率为1366x768。当屏幕分辨率低于给定的屏幕分辨率时,我无法调整表单控件的大小。是否有任何解决方案可以调整表单控件的大小对于较低的分辨率也。 到目前为止,我已经尝试了以下代码。当分辨率高于给定分辨率时,它可以很好地工作。

 private void masterform_Resize(object sender, EventArgs e)
        {

            double RW = (this.Width - CW) / CW;
            double RH = (this.Height - CH) / CH;
            foreach (Control Ctrl in Controls)
            {
                Ctrl.Width += Convert.ToInt32(Ctrl.Width * RW);
                Ctrl.Height += Convert.ToInt32(Ctrl.Height * RH);
                Ctrl.Left += Convert.ToInt32(Ctrl.Left * RW);
                Ctrl.Top += Convert.ToInt32(Ctrl.Top * RH);
            }
            CW = this.Width;
            CH = this.Height;
        }


  private void masterform_Load(object sender, EventArgs e)
        {
            IW = this.Width;
            IH = this.Height;`enter code here`

        }   

如果有任何解决方案退出,请告诉我。

2 个答案:

答案 0 :(得分:2)

您可以使用Table Layout Panel + Anchor让表单处理每个分辨率中控件的大小。

为此,您可以按照以下说明操作:

创建表单放置表格布局面板,根据需要设置行和列, 不要忘记 将cols宽度设置为Percent然后放入单元格中的控件(或者首先将面板放入单元格然后将控件放在面板上),将锚点设置为左+右,就是这样。

见下图:

Pic1

Pic2

答案 1 :(得分:0)

试试这个

private Size oldSize;
private void Form1_Load(System.Object sender, System.EventArgs e)
{
    oldSize = base.Size;
}
protected override void OnResize(System.EventArgs e)
{
    base.OnResize(e);
    foreach (Control cnt in this.Controls) {
        ResizeAll(cnt, base.Size);
    }
    oldSize = base.Size;
}
private void ResizeAll(Control cnt, Size newSize)
{
    int iWidth = newSize.Width - oldSize.Width;
    cnt.Left += (cnt.Left * iWidth) / oldSize.Width;
    cnt.Width += (cnt.Width * iWidth) / oldSize.Width;

    int iHeight = newSize.Height - oldSize.Height;
    cnt.Top += (cnt.Top * iHeight) / oldSize.Height;
    cnt.Height += (cnt.Height * iHeight) / oldSize.Height;
}

description here