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 的建议,我在下面发布了最少的代码来重现我面临的问题。
- 创建了一个全新的项目
Windows Forms App (.NET Framework) v4.6.1
- 我搜索并安装了
MaterialSkin.2 v2.1.3 (not the latest)
leocb, IgnaceMaes
- 我搜索并安装了
CircularProgressBar v2.8.0.16
作者 Soroush Falahati
- 我已经打开
Form1.cs
并进行了必要的更改以加载 Material皮肤
- 我已将
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;
我已经搜索了几天,但没有任何结果。
我正在开发一个项目,该项目使用名为 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 的建议,我在下面发布了最少的代码来重现我面临的问题。
- 创建了一个全新的项目
Windows Forms App (.NET Framework) v4.6.1
- 我搜索并安装了
MaterialSkin.2 v2.1.3 (not the latest)
leocb, IgnaceMaes - 我搜索并安装了
CircularProgressBar v2.8.0.16
作者 Soroush Falahati - 我已经打开
Form1.cs
并进行了必要的更改以加载 Material皮肤 - 我已将
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;