【发布时间】:2019-10-10 08:05:48
【问题描述】:
我想在我们的 VB.net WinForms 应用程序中启用 dpi Awareness。 所以我把下面的代码放到 app.config 文件中。 但是我们的项目没有选中“启用应用程序框架”复选框。 我们的应用程序从一个共享的 sub main 和 .show() 开始。 当未选中该复选框时,我无法启用 dpiAwareness! (自 19 年 4 月以来,您可以在任务管理器中看到 dpi 模式) app.config 设置被忽略?!我不知道。
在测试项目中,没有问题。在那里我可以选中该框并且 app.config 可以工作,或者我不选中它并且可以在运行时通过 api 调用更改 dpi 模式。
</system.diagnostics>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
如果没有“启用应用程序框架”复选框,app.config 中的 dpi 设置将无法工作。
【问题讨论】:
-
您没有在这里回答您自己的问题吗:“app.config 中的 dpi 设置在没有“启用应用程序框架”复选框的情况下将无法工作”?
-
不,我无法在我们的特殊应用中检查这个。
-
您还可以调用一些临时的本地方法。见注释here
-
您没有发布失败的代码(当它不应该发布时),所以没有人可以看到您在
app.manifest文件中实际编写的内容。请注意,在app.manifest文件中,和 条目都需要存在,并且 设置(字面值)不等于 app.config之一。 -
如果你想使用 app.config 文件来声明 .Net 4.7 及以上版本的 DPI 感知,你还必须修改 app.manifest 文件(项目属性->应用程序->查看窗口设置按钮) 并声明程序与 Win 10 兼容。请参阅:Configuring your Windows Forms app for high DPI support。如果使用 app.config 方法,*不要在 app.manifest 文件中设置 dpi 级别,因为这将覆盖 app.config 设置。