我的应用程序从文件加载信息,然后在表单中的 y 数量的标签页上创建 x 数量的控件。
我的问题是,当用户的 DPI 与标准 Windows 96 不同时,添加的控件会相互重叠。表单上的初始控件很好。
如何将要修改的控件设置为 96 DPI 而不是用户机器正在运行的任何内容?
如果这很困难,有没有办法查看用户 DPI 是多少?然后我可以发出警告说你应该使用 96DPI 等。
感谢您给我的任何帮助或建议!
我假设您使用 Windows.Forms。您可以使用属性AutoScaleMode
来控制每个 GUI 控件的缩放方式。您可以选择更多选项,因此请尝试最适合您的选项,或者您也可以阅读MSDN 中的这篇文章,以获取有关 Windows.Forms 中控件缩放原则的更多信息。
只是为了回答我自己的问题,我写了这个并将它放在我的表单加载事件中:
Graphics formGraphics = this.CreateGraphics();
if ((formGraphics.DpiX != 96) || (formGraphics.DpiY != 96))
{
MessageBox.Show("You are attempting to run this application in an unknown DPI. This application has been designed for Normal size (96 DPI), you may experience some display issues if you continue to use your current settings. Please change your Display settings back to normal size through your control panel to ensure you don't experience any problems. Thank you.",
"Warning",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1);
}