在.NET C#:继承控件文本框并更改默认背景色

在.NET C#:继承控件文本框并更改默认背景色,c#,.net,winforms,C#,.net,Winforms,我要继承类System.Windows.Forms.Textbox, 并将其默认BackColor属性更改为smetingelse 最好的方法是什么 这需要两个部分: 1) 在继承类中,我应该将 base.BackColor=Color.FromArgb(0x55,0x55,0xFF) 线路:在电梯里?在初始化中?负载还有别的地方吗?什么地方最合适 2) 当我设置DefaultValue属性时,如何给它一个颜色类型的参数? 如果我给出一个int,比如0x5555FF,那么稍后当我在Visual

我要继承类System.Windows.Forms.Textbox, 并将其默认BackColor属性更改为smetingelse

最好的方法是什么

这需要两个部分:

1) 在继承类中,我应该将 base.BackColor=Color.FromArgb(0x55,0x55,0xFF) 线路:在电梯里?在初始化中?负载还有别的地方吗?什么地方最合适

2) 当我设置DefaultValue属性时,如何给它一个颜色类型的参数? 如果我给出一个int,比如0x5555FF,那么稍后当我在Visual Studion的设计器中时, 如果单击控件实例上的Backcolor属性,然后右键单击该属性并选择“重置”
,则会出现错误: 无法将“System.Int32”类型的对象转换为“System.Drawing.Color”类型。

IDE希望DefaultValue属性中的值是一个颜色结构,而不是int。。 但是我不能在属性中发送颜色结构,那么解决方案是什么

非常感谢你在构造函数中这样做,是吗 2) 对RGB格式执行以下操作:

[DefaultValue(typeof(Color), "255,0,0")]
public override Color BackColor { get { return base.BackColor; } set { base.BackColor = value; } }

[DefaultValue(typeof(Color),“255,0,0”)]非常好用!非常感谢。但是,“公共覆盖颜色背景{get;set;}”部分使我的文本框显示为黑色背景。。只有在我编写它的时候:public override Color BackColor{get{return(base.BackColor);}set{base.BackColor=value;}}}它才能正常工作。。为什么?@Omer:the long way调用了
BackColor
的基类版本,它实际上改变了颜色(使用Win32 magic)。短版本是一个自动属性,基本上只是将派生类中的颜色存储在一个新字段中,不做任何处理。上一个问题(黑色背景)出现了,因为我的项目需要编译为.NET 2.0,而不是3.0或更高版本。。我认为简短的“get;set;”形式出现在.NET3.0编辑:siride您是对的。将项目更改为.NET 3.5 id没有帮助。。因此,我将回到长形式。。感谢you@Omer:如果编译为2.0,则会出现编译错误,而不是黑色文本框。问题与您使用的.NET版本无关,而是与
BackColor
的实际实现方式有关。