一位客户抱怨说,在他的电脑上,某些表格上的一些文字显示的尺寸不对,而且超出了界限。
用户抱怨的文本是LinkLabel控件。
根据文件中的说明,控件必须将UseCompatibleTextRendering设置为true,以便将文本的正确部分突出显示为链接。
我观察到客户端使用的是高-DPI监视器,显示比例为125%,因此我怀疑这是一个显示缩放问题,因为其他标签将此属性设置为false并显示为OK。
有谁知道如何使LinkLabel正确地进行缩放吗?
发布于 2022-03-21 19:33:47
正如我从@ourmandave和@Jimi为LinkLabel控件建议的答案中了解到的,属性UseCompatibleTextRenderin设置为true似乎很重要。
此外,根据微软的文档,重要的是应用程序具有dpi感知和PerMonitorV2设置。
微软指出,这对于区分使用.NET框架4.7的应用程序和使用较低版本的.NET框架的应用程序非常重要。
在我的例子中,我使用.NET框架4.6.2,有必要将这些选项添加到清单中。
<?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"。整个块使用该命名空间:
<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中,这必须类似于
<configuration>
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</System.Windows.Forms.ApplicationConfigurationSection>
...
</configuration>对于最后一部分,我不能保证,因为我还没有测试到。
https://stackoverflow.com/questions/60635910
复制相似问题