如何解决在不同分辨率的辅助屏幕上最大化表格?
我正在开发一个简单的Windows应用程序(使用C#),并且希望它显示在第二个监视器中最大化的窗体。为此,我在表单的“ Load”事件上执行以下操作:
private void FormTest_Load(object sender,EventArgs e)
{
Screen[] screens = Screen.AllScreens;
this.WindowState = FormWindowState.Normal;
this.Location = screens[1].WorkingArea.Location;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
}
我遇到的问题是,当我执行此操作时,表单仅占据了屏幕的一部分。我的主屏幕的分辨率为1024x768,我的辅助屏幕的分辨率为1920x1080,看来表格的大小与我的辅助屏幕的大小相同。
此外,我还有一个按钮,该按钮运行以下代码以最大化屏幕或将其恢复为正常:
private void ChangeSize() {
if (this.WindowState == System.Windows.Forms.FormWindowState.Maximized)
{
this.WindowState = System.Windows.Forms.FormWindowState.Normal;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
}
else
{
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
}
}
当我两次单击按钮时(首先是使表单最小化,然后再次使其最大化),该表单确实覆盖了整个辅助屏幕,但是如果我尝试只在代码中运行该函数两次(对于为了进行测试),在“ FormTest_Load”中的代码之后,屏幕仍然无法正确覆盖整个屏幕。
我可能在这里犯了一个noob错误,但是我为此苦了一段时间,因此,如果有人可以阐明我的代码有什么问题,我将不胜感激。
解决方法
我试图获得与您描述的结果相同的结果(更改分辨率等),但是在我的计算机和屏幕上一切正常。可能是……变量screens
到底是什么?我假设是Screen.AllScreens
,像这样:
protected override void OnLoad(EventArgs e)
{
Screen[] screens = Screen.AllScreens;
int screenNumber = 1;
this.WindowState = FormWindowState.Normal;
this.Location = screens[screenNumber].WorkingArea.Location;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
}
正如我所说,它对我来说很好。
另外,您可以检查计算机的屏幕设置:文本和应用程序的大小是否设置为100% (recommended value)
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。