我正在开发一个简单的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”中的代码之后运行该函数两次(为了测试),屏幕仍然不会正确覆盖整个屏幕。
我可能犯了一个菜鸟的错误,但我已经为此挣扎了一段时间,所以我真的很感激,如果有人能阐明我的代码有什么问题。
2条答案
按热度按时间amrnrhlw1#
我试图得到相同的结果,你描述(改变分辨率等),但所有的作品在我的电脑和屏幕上的罚款。变量
screens
到底是什么?我假设它是Screen.AllScreens
,就像这样:就像我说的,它对我来说很好。此外,您还可以检查计算机的屏幕设置:文本和应用程序的大小是否设置为
100% (recommended value)
?ukqbszuj2#
我也遇到了同样的问题,只是第二台显示器的分辨率比第一台小。
唯一的解决办法是使用WinAPI: