如何在c#中重写System.Windows.Forms标签背景色

本文关键字:Windows Forms 标签 背景色 System 重写 | 更新日期: 2023-09-27 18:03:52

我试图写一个类来覆盖我的所有标签背景在我的整个项目,而不改变他们的定义在designer.cs文件。我的意思是我可以简单地把this.label1 = new System.Windows.Forms.Label();改成this.label1 = new myLabel();之类的东西但是我不想这样做。
cs

    using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace T1
{
    class Label:System.Windows.Forms.Label
    {
        public override Color BackColor
        {
            get
            {
                return Color.DarkRed;
            }
            set
            {
                base.BackColor = value;
            }
        }
    }
}

我试图调用我的命名空间System.Windows.Forms,希望覆盖它当前的标签颜色属性,但到目前为止我无法得到任何地方。任何帮助都会很感激。祝你一切顺利。

如何在c#中重写System.Windows.Forms标签背景色

首先,让我开始说,我认为这真的听起来像你会更好替换引用与你已经提到的覆盖的标签(也许不是通过编辑designer.cs,而是通过替换控件)

根据我的评论,你可以创建你自己的表单来覆盖所有需要这样调整控件的表单,然后从那个表单继承

class MyMiddleFormClass : Form
{
     public MyMiddleFormClass()
     {
          this.OnLoad += OnLoadHandler;
     }
     private void OnLoadHandler(object o, EventArgs e)
     {
          foreach(var lbl in this.Controls.OfType<Label>())
              lbl.BackColor = Color.DarkRed;
     }
}

注意:我没有测试过这段代码,如果你需要自己使用OnLoad事件,可能需要额外的工作。

还是那句话,如果你现在花时间重构你的控件,而不是做这些,你会得到更多的好处。