我正在设计一个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`
}
如果有任何解决方案退出,请告诉我。
答案 0 :(得分:2)
您可以使用Table Layout Panel
+ Anchor
让表单处理每个分辨率中控件的大小。
为此,您可以按照以下说明操作:
创建表单放置表格布局面板,根据需要设置行和列, 不要忘记 将cols宽度设置为Percent
然后放入单元格中的控件(或者首先将面板放入单元格然后将控件放在面板上),将锚点设置为左+右,就是这样。
见下图:
答案 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;
}