Winform主控制太大

时间:2015-11-08 14:57:21

标签: c# winforms

我正在开发一个Winform应用程序,它应该占据整个屏幕,目标设备的分辨率为1920x1080。 主控制窗口定义如下:

MaximumSize 1920, 1080
Size 1920, 1080
MinimumSize 1918, 1078
StartPosition CenterScreen

要填充屏幕,我已将以下内容添加到_Load方法中:

 this.TopMost = true;
 this.FormBorderStyle = FormBorderStyle.None;
 this.WindowState = FormWindowState.Maximized;
 this.Activate();

当我运行应用程序时,控制窗口从左上方开始,应该如此,但是窗口的最右边的第5个和第5个(大约)是离开屏幕的。应该出现在截止区域中的控件位于适当的位置(例如,位置1712,551处的标签,其应该在1920x1080屏幕的边界内)。 谁能解释一下?如果我知道为什么会这样,我相信解决方案会很明显。

2 个答案:

答案 0 :(得分:3)

  

我已将以下内容添加到_Load方法

使用Load事件处理程序是个问题。您正在创建之后更改窗口的布局指标。通过给出负位置和大于屏幕两倍边框宽度的大小来最大化窗口。这样边框就不可见了。

但是您的代码更改了FormBorderStyle,现在该位置和大小已不再正确。由于窗口不再有边框。因此窗口太大,部分客户区域不在屏幕上。

必须将FormBorderStyle分配移动到表单的构造函数中,以便使用正确的边框创建窗口。使用设计器设置属性是最简单的。

答案 1 :(得分:1)

您的Windows安装可能正在实际扩展表单。这可以使用DPI设置(截止的1/5声音,如DPI设置为125%)或Windows 10进行自我调整。

最好的办法是不依赖于屏幕测量是正确的。相反,尝试使用能够自动调整大小的面板,例如TableLayoutPanel和其他面板。这样你就不需要继续计算了,相反,框架会为你做到这一点。