首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winforms - LinkLabel显示缩放?

Winforms - LinkLabel显示缩放?
EN

Stack Overflow用户
提问于 2020-03-11 12:20:16
回答 1查看 241关注 0票数 1

一位客户抱怨说,在他的电脑上,某些表格上的一些文字显示的尺寸不对,而且超出了界限。

用户抱怨的文本是LinkLabel控件。

根据文件中的说明,控件必须将UseCompatibleTextRendering设置为true,以便将文本的正确部分突出显示为链接。

我观察到客户端使用的是高-DPI监视器,显示比例为125%,因此我怀疑这是一个显示缩放问题,因为其他标签将此属性设置为false并显示为OK。

有谁知道如何使LinkLabel正确地进行缩放吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-21 19:33:47

正如我从@ourmandave和@Jimi为LinkLabel控件建议的答案中了解到的,属性UseCompatibleTextRenderin设置为true似乎很重要。

此外,根据微软的文档,重要的是应用程序具有dpi感知和PerMonitorV2设置。

微软指出,这对于区分使用.NET框架4.7的应用程序和使用较低版本的.NET框架的应用程序非常重要。

在我的例子中,我使用.NET框架4.6.2,有必要将这些选项添加到清单中。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <assemblyIdentity version="1.0.0.0" name="demo"/>
  <asmv3:application>
    <asmv3:windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
      <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
  
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!-- Windows Vista -->
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />

      <!-- Windows 7 -->
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />

      <!-- Windows 8 -->
      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />

      <!-- Windows 8.1 -->
      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />

      <!-- Windows 10 -->
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
    </application>
  </compatibility>
</assembly>

特别地,我必须在顶部添加名称空间xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"。整个块使用该命名空间:

代码语言:javascript
复制
  <asmv3:application>
    <asmv3:windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
      <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>

这似乎也是重要的,包括Windows 10部分,它已经包括在我的情况。

从.NET Framework4.7开始,这些信息应该包含在正常的app.config中,这必须类似于

代码语言:javascript
复制
<configuration>
    <System.Windows.Forms.ApplicationConfigurationSection>
      <add key="DpiAwareness" value="PerMonitorV2" />
      <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </System.Windows.Forms.ApplicationConfigurationSection>
    ...
</configuration>

对于最后一部分,我不能保证,因为我还没有测试到。

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

https://stackoverflow.com/questions/60635910

复制
相关文章

相似问题

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