【问题标题】:.NET Custom Control: Prevent font size change/ inherit font scale/size from parent.NET 自定义控件:防止字体大小更改/从父级继承字体比例/大小
【发布时间】:2011-08-12 07:02:00
【问题描述】:

我在 C# 中创建了一些控件,并且正在成功使用它们。但是,在具有自定义设置(字体)DPI 的用户 PC 上,比如说 125 % 甚至 150 % -- 我的控件继承了新的比例,并且无法正确显示。

我想知道如何禁止我的控件继承这个比例。

【问题讨论】:

  • C# 只是一种语言。 winforms、wpf、asp、silverlight等都有控件。你可以添加更多的特殊标签。此外,至少了解控件的基类会很有帮助。
  • DPI 缩放非常重要,不能只关闭它。修复“无法正确显示”问题,不管它是什么。

标签: c# .net winforms


【解决方案1】:

我知道这不是您要寻找的答案。但是考虑一下为什么人们将他们的系统设置成这样。这可能是视力问题或只是他们的偏好。是的,处理缩放显示可能会很痛苦,但这比用户因为无法阅读/使用而忽视您的产品要好。

【讨论】:

    【解决方案2】:

    如果您正在构建自己的应用程序,您可以将 Form 的 AutoScaleMode 属性设置为“None”,以禁用根据系统 DPI 设置自动调整 Form 字体大小。

    如果您只是构建一个其他人将集成到他们自己的表单中的控件,您需要覆盖该控件的 Font 属性并将其强制为您预先确定的硬编码值。

    另请注意,正如其他人所说,您不想这样做 - 用户出于某种原因调整了他们的系统 DPI,并且覆盖他们的选择可能只会使你的控制对他们不可用。如果问题仅仅是当系统 DPI 更改时您的控件没有正确缩放,请利用 Winform 的 AutoSize 功能并使用会随着事物大小的变化而自动调整的布局面板,例如 TableLayoutPanel(适当设置 AutoSize行和列)或 FlowLayoutPanel。

    【讨论】:

    • +1 为问题的实际解决方案,谢谢。在我的情况下,我必须制作一个导入另一个软件包的 UserControl,该软件包已经包含一大堆已关闭此功能的 UserControl。如果我不关闭它,我的 UserControl 将是唯一继承这些设置的。此外,该软件包中的默认设置与所有其他用户控件的固定设置完全不同。所以在我的情况下,外观继承功能被现有的 UserControls 破坏了,我必须处理它。
    【解决方案3】:

    如果您的控件在用户使用自定义字体时无法正确显示,那么您做错了事并且没有“成功使用它们”。 another SO question 询问如何在 Winforms 中考虑自定义字体大小。不难。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多