我正在devise一个分辨率为1366×768的dotnet窗口应用程序。当屏幕的分辨率低于给定的屏幕分辨率时,我无法调整窗体控件的大小。是否有任何解决scheme可以调整窗体控件的分辨率也。 到目前为止,我已经尝试了下面的代码。 当分辨率高于给定分辨率时,效果很好。
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` }
让我知道是否有任何解决scheme退出。
您可以使用“ Table Layout Panel
+ Anchor
让表单在每个分辨率中处理控件的大小。
为此,您可以按照以下说明操作:
创建一个表格放置表格布局面板,根据需要设置行和列, 不要忘记设置列宽度为Percent
然后把你的控件放在单元格中(或者先把面板放到单元格中,然后把你的控件放在面板上) ,把锚定在左边+右边,就是这样。
见下图:
尝试这个
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; }
这里描述