提高 OpenFileDialog() 的分辨率

Improve Resolution of OpenFileDialog()

我正在编写一个简单的 Winforms 程序,它使用一个浏览按钮,允许用户使用 OpenFileDialog() select 一个文件,但是显示的文件资源管理器的分辨率很高 pixelated/low . 查看 OpenFileDialog 属性除了可能的 属性 称为 AutoUpgradeEnabled 之外没有任何帮助,但这似乎对解决方案没有任何帮助。

问题并不严重,但它使程序看起来不那么专业,而且我已经看到类似的浏览功能在其他程序上具有更好的分辨率,我知道可以提供更高分辨率的资源管理器选项(但是这可能与其他编程语言有关。

我目前用来获取文件名的代码如下:

public static string GetFile(string path) {
    OpenFileDialog fileExplorer = new OpenFileDialog();
    fileExplorer.Multiselect = false;
    fileExplorer.InitialDirectory = path;
    if (fileExplorer.ShowDialog() == DialogResult.OK) {
        return fileExplorer.SafeFileName;
    }
}

我正在查看的屏幕具有高 DPI 和 1980x1080p 屏幕,我目前使用的是 Windows 10 机器 - 更新 1809。

A picture showing the clear contrast between standard (right) and the Winforms version (left)

如发现的已发布答案所示 here,该解决方案可以提高 winforms 进程的分辨率,显着改善程序的整体外观

解决方案有效,主要程序代码类似于以下内容:

static class Program 
{
    [STAThread]
    static void Main()
    {
        if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware();
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private static extern bool SetProcessDPIAware();
}