将控件(轨迹栏,多行文本框和标签)添加到不同DPI下的表单 - C#

时间:2011-01-18 16:30:26

标签: c# .net controls scaling dpi

我的应用程序从文件中加载信息,然后在表单中的y个页面上创建x量的控件。

我的问题是,当用户与标准Windows 96具有不同的DPI时,添加的控件会相互重叠。表格上的初始控制很好。

如何将要修改的控件设置为96 DPI,而不是用户机器运行的是什么?

如果这很困难,有没有办法看看用户DPI是什么?然后我可以发出警告说你应该使用96DPI等等。

感谢您的帮助或建议您给我!

2 个答案:

答案 0 :(得分:1)

我假设你使用Windows.Forms。您可以使用属性AutoScaleMode来控制每个GUI控件的缩放方式。您可以选择更多选项,因此请尝试最适合您的选项,或者您也可以阅读this article in MSDN以获取有关Windows.Forms中控件缩放原则的更多信息。

答案 1 :(得分:0)

为了回答我自己的问题,我写了这个并把它放在我的Form加载事件中:

        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);
        }