C# WinForms - 如何防止自定义控件继承表单字体样式?

C# WinForms - How to prevent custom control from inherit the form font styling?

我已经搜索了几天,但没有任何结果。

我正在开发一个项目,该项目使用名为 MaterialSkin 的 WinForm 自定义样式,github 页面是 https://github.com/IgnaceMaes/MaterialSkin

基本上为了使用它,我只是将继承的 class 从这个 public partial class FormMain : Form 更改为这个 public partial class FormMain : MaterialForm,这将 Material 设计应用于我的项目。

问题是所有控件都受此更改影响。 如果我添加标签并更改字体,视觉更改仅在设计模式下有效,当我 运行 项目时,应用 MaterialSkin 字体(Roboto)。

现在我想使用此存储库中名为 CircularProgressBar 的自定义控件 https://github.com/falahati/CircularProgressBar

问题是一样的,我想要一个大数字在圆心,它在设计模式下工作。 当我运行项目时,字号缩小到8,5。

我已经尝试在 Form_Load 事件和 OnPaint 中手动将新字体设置为 CircularProgressBar,但没有任何效果。

关于我遗漏的任何想法?

编辑

按照@Jimi 的建议,我在下面发布了最少的代码来重现我面临的问题。

  1. 创建了一个全新的项目Windows Forms App (.NET Framework) v4.6.1
  2. 我搜索并安装了 MaterialSkin.2 v2.1.3 (not the latest) leocb, IgnaceMaes
  3. 我搜索并安装了 CircularProgressBar v2.8.0.16 作者 Soroush Falahati
  4. 我已经打开 Form1.cs 并进行了必要的更改以加载 Material皮肤
  5. 我已将 CircularProgressBar 控件添加到 Form1、Build 和 运行。
// Form1.cs
using MaterialSkin;
using MaterialSkin.Controls;

namespace SimpleTestProject
{
    public partial class Form1 : MaterialForm
    {
        private readonly MaterialSkinManager materialSkinManager = null;

        public Form1()
        {
            InitializeComponent();

            materialSkinManager = MaterialSkinManager.Instance;
            materialSkinManager.AddFormToManage(this);
            materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT;
        }
    }
}

结果

按照@Jimi 和@Leo 的建议,要避免将 MaterialSkin 样式应用于所有控件,只需禁用名为 EnforceBackcolorOnAllComponents

MaterialSkinManager 属性

materialSkinManager.EnforceBackcolorOnAllComponents = false;