[英]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 所建议的,我在下面发布了最小的代码来重现我面临的问题。
Windows Forms App (.NET Framework) v4.6.1
MaterialSkin.2 v2.1.3 (not the latest)
CircularProgressBar v2.8.0.16
v2.8.0.16Form1.cs
并进行了必要的更改以加载 MaterialSkinCircularProgressBar
控件添加到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 样式应用于所有控件,只需禁用名为EnforceBackcolorOnAllComponents
的MaterialSkinManager
属性
materialSkinManager.EnforceBackcolorOnAllComponents = false;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.