[英]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.