我正在开发一个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屏幕的边界内)。 谁能解释一下?如果我知道为什么会这样,我相信解决方案会很明显。
答案 0 :(得分:3)
我已将以下内容添加到_Load方法
使用Load事件处理程序是个问题。您正在创建之后更改窗口的布局指标。通过给出负位置和大于屏幕两倍边框宽度的大小来最大化窗口。这样边框就不可见了。
但是您的代码更改了FormBorderStyle,现在该位置和大小已不再正确。由于窗口不再有边框。因此窗口太大,部分客户区域不在屏幕上。
您必须将FormBorderStyle分配移动到表单的构造函数中,以便使用正确的边框创建窗口。使用设计器设置属性是最简单的。
答案 1 :(得分:1)
您的Windows安装可能正在实际扩展表单。这可以使用DPI设置(截止的1/5声音,如DPI设置为125%)或Windows 10进行自我调整。
最好的办法是不依赖于屏幕测量是正确的。相反,尝试使用能够自动调整大小的面板,例如TableLayoutPanel
和其他面板。这样你就不需要继续计算了,相反,框架会为你做到这一点。