簡體   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