我尝试编写一个类来覆盖整个项目中的所有标签背景而不更改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,希望覆盖它的当前标签颜色属性,但到目前为止我无法到达任何地方。 任何帮助,将不胜感激。 一切都好。
答案 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事件,可能需要额外的工作。
同样,通过花时间重构你的控件而不是这样做,你会受益更多。