调整窗体大小以适应任何屏幕大小

时间:2013-01-14 16:04:37

标签: c# winforms .net-4.5

我刚刚设计了一个Windows窗体应用程序但是当它在我的朋友小型笔记本电脑上运行时;该 表格看起来太大或者我应该说必须从左向右滚动或从上到下滚动以访问各种文本框,按钮等。我正在查看this SO answer, 它显示了以下代码:

this.WindowState = FormWindowState.Maximized;

我认为这段代码驻留在特定的表单构造函数中?这段代码会解决我的所有问题吗?除非我开始搞乱我自己的屏幕分辨率,否则我目前无需使用较小的笔记本电脑进行测试。

3 个答案:

答案 0 :(得分:3)

在该问题的接受版本中发布的代码需要放在表单构造函数中,当然(InitializeComponents)并且具有最大化形式当然会消除很多关于大小调整的问题。无论如何,财产:

Screen.PrimaryScreen.WorkingArea

对于相对于当前屏幕大小的表单大小调整和定位非常有用。例如:

this.Width = Screen.PrimaryScreen.WorkingArea.Width / 2;
this.Height = Screen.PrimaryScreen.WorkingArea.Height / 2;
this.Top = (Screen.PrimaryScreen.WorkingArea.Top + Screen.PrimaryScreen.WorkingArea.Height) / 4;
this.Left = (Screen.PrimaryScreen.WorkingArea.Left + Screen.PrimaryScreen.WorkingArea.Width) / 4;

答案 1 :(得分:1)

在将WindowState设置为最大化之前,您需要将表单完全调整大小。

尽可能在VS设计器中缩小表单,为其每个组件设置Dock,Anchor和Min / Max大小,尝试在设计器中调整它的大小。重复,直到它调整好。

如果上述迭代不够,您可能需要在Panel中将控件组合在一起以控制它们的调整大小。

答案 2 :(得分:0)

我个人使用TableLayoutPanel并通过定义行和列以及设置其高度和宽度来设计我的表单,其中一些AutoSize部分使用Percent,一部分使用Absolute大小类型根据我希望我的形状的形状。然后我将控件(文本框,标签,组合框)放在tablelayoutpanel的单元格内,并将dock设置为Fill。就是这样。

我不确定这是否是找到这份工作的正确方法,但是两年来我一直这样做而没有失败。希望它对你也有帮助。