如何在C#中覆盖System.Windows.Forms标签背景颜色?

时间:2015-07-22 07:30:42

标签: c# oop override

我尝试编写一个类来覆盖整个项目中的所有标签背景而不更改designer.cs文件中的定义。 我的意思是我可以简单地将this.label1 = new System.Windows.Forms.Label();改为this.label1 = new myLabel();,但我不想这样做。
这是我的label.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,希望覆盖它的当前标签颜色属性,但到目前为止我无法到达任何地方。 任何帮助,将不胜感激。 一切都好。

1 个答案:

答案 0 :(得分:0)

首先,我首先要说的是,我认为通过用你提到的覆盖标签替换引用(或许不是通过编辑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事件,可能需要额外的工作。

同样,通过花时间重构你的控件而不是这样做,你会受益更多。