首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EnableWindowsFormsHighDpiAutoResizing设置在C# .NET windows窗体应用程序中做什么?

EnableWindowsFormsHighDpiAutoResizing设置在C# .NET windows窗体应用程序中做什么?
EN

Stack Overflow用户
提问于 2016-07-27 06:08:08
回答 1查看 7K关注 0票数 8

我正在尝试使用带有常规窗口窗体(而不是WPF)的C# .NET来制作一个对每个监视器新闻部都有帮助的应用程序。

我理解选择每台显示器新闻部支持的概念,并在清单中这样做了:

代码语言:javascript
复制
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
   DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need 
   to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should 
   also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->

<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings>
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
  </windowsSettings>
</application>

当我选择这样做时,我的应用程序从96个opt监视器(我的默认监视器)拖到一个144 opt监视器上时,它的像素大小根本不会改变(也就是说,应用程序在两个监视器上都是像素对像素相同的,除了最小化-最大化-关闭字形的微小差异)。因此,应用程序非常小,文本很难在144 and显示器上阅读。

EnableWindowsFormsHighDpiAutoResizing设置似乎没有任何效果,因为我的应用程序以完全相同的方式显示该设置是否正确,除非我在app.config文件中做错了什么:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
  </appSettings>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
  </startup>
</configuration>

有人能解释一下这个选项的作用吗?

它是编写C# windows窗体应用程序的解决方案的一部分吗?当从96 the监视器拖动到144 the监视器时,windows窗体应用程序会自动调整自身的大小吗?(我的意思是,不需要编写代码来迭代所有控件并设置自定义缩放因子)。

我已经对这个问题做了很多小时的研究,但我自己还没有一个明确的答案。

看来,如果我选择了每台显示器,新闻部的意识,那么我必须提交WM_DPICHANGED自己,以便做些什么。如果这是答案,那就顺其自然吧,但我真的觉得我错过了一些建立在做事方式上的东西。

EN

回答 1

Stack Overflow用户

发布于 2022-11-10 07:25:57

"dpiAware = true“意味着应用程序应该处理DPI更改,否则Windows将为您缩放表单/字体。这是我的理解。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38604966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档