You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 7/8 WinForms控件字体随系统文本大小变化问题求助

解决.NET 7/8 WinForms忽略系统文本大小缩放的问题

要恢复.NET Framework 4.8下忽略系统文本大小调整的行为,可通过以下步骤实现:

核心解决方案:设置文本缩放策略

在应用启动代码中添加Application.SetTextScaleFactorPolicy(TextScaleFactorPolicy.Ignore),该API是.NET 7及以上新增的,专门用于控制应用是否响应系统文本缩放。

完整启动代码示例:

Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);
// 忽略系统文本大小缩放,与.NET Framework 4.8行为对齐
Application.SetTextScaleFactorPolicy(TextScaleFactorPolicy.Ignore);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());

原理说明

  • .NET Framework 4.8的AutoScaleMode.Dpi仅响应显示器DPI变化,不处理系统文本缩放滑块的调整。
  • .NET 7/8默认会同时响应显示器DPI和文本缩放,通过设置TextScaleFactorPolicy.Ignore,可以让应用回到仅基于显示器DPI缩放的逻辑,控件字体大小不再随系统文本滑块变动。

额外注意事项

  • 该设置全局生效,会影响所有窗体和控件。
  • 如果需要针对单个窗体例外处理,可以重写窗体的OnTextScaleFactorChanged方法,自行控制缩放逻辑:
    protected override void OnTextScaleFactorChanged(EventArgs e)
    {
        // 注释掉base调用,阻止窗体应用文本缩放
        // base.OnTextScaleFactorChanged(e);
    }
    

内容的提问来源于stack exchange,提问作者Dave Doknjas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:02:35