繁体   English   中英

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 ,这会将材料设计应用于我的项目。

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

现在我想从这个 repo https://github.com/falahati/CircularProgressBar使用一个名为 CircularProgressBar 的自定义控件

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

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

关于我错过的任何想法?

运行时更改的字体大小覆盖了我的定义

编辑

正如@Jimi 所建议的,我在下面发布了最小的代码来重现我面临的问题。

  1. 创建了一个全新的项目Windows Forms App (.NET Framework) v4.6.1
  2. 我已经搜索并安装了 leocb、IgnaceMaes MaterialSkin.2 v2.1.3 (not the latest)
  3. 我已经搜索并安装了 Soroush Falahati 的CircularProgressBar v2.8.0.16 v2.8.0.16
  4. 我已经打开Form1.cs并进行了必要的更改以加载 MaterialSkin
  5. 我已将CircularProgressBar控件添加到Form1 、构建和运行。
// 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 样式应用于所有控件,只需禁用名为EnforceBackcolorOnAllComponentsMaterialSkinManager属性

materialSkinManager.EnforceBackcolorOnAllComponents = false;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM