c# - 在不同分辨率的辅助屏幕上最大化表格?
问题描述
我正在开发一个简单的 Windows 应用程序(在 C# 中),我希望它显示一个在我的第二个监视器中最大化的表单。为此,我对表单的“加载”事件执行以下操作:
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;
}
}
当我单击按钮两次(首先取消最大化表单,然后再次最大化它)时,表单确实完美地覆盖了整个辅助屏幕,但是如果我尝试在代码中运行该函数两次(为了testing)在“FormTest_Load”中的代码之后,屏幕仍然无法正确覆盖整个屏幕。
我可能在这里犯了一个菜鸟错误,但我已经为此苦苦挣扎了一段时间,所以如果有人能阐明我的代码有什么问题,我将不胜感激。
解决方案
我试图获得与您描述的相同的结果(更改分辨率等),但在我的计算机和屏幕上一切正常。可能是......变量到底是什么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)
?
推荐阅读
- java - 使用 Selenium 突出显示网页中的文本
- git - 将 Jenkins Git 轮询限制在一个分支
- python - 将 XML 转换为用于 BigQuery 的 JSON 可加载结构
- swiftui - 如何将@published 和@observed 与FSCalendar 一起使用?
- regex - 在 perl 中搜索和替换特殊字符
- c# - 如何在 UWP 应用程序中添加使用 inkCanvas 和 Canvas 缩放网格?
- graphql-js - Relay Modern BadRequestError:缺少多部分字段“操作”
- python - Pyaudio 没有找到,也无法安装。我的虚拟助手需要它
- vue.js - 使与 VUEJS 中的数据匹配的选项中的文本加粗
- c# - 使用 OneDrive SDK 上传大文件时如何提高速度