2014-12-02 72 views
0

我想继承类System.Windows.Forms.Textbox, 并将其默认的BackColor属性更改为别的东西。在.NET C#中:继承控件Texbox,并更改默认的BackColor

这样做的最佳方法是什么?

这需要2个部分:

1)在我的继承类,我应该在哪里把 base.BackColor = Color.FromArgb(0x55,0x55,0xFF); line:在Ctor中?在初始化?加载?其他地方?这里是最合适..

2)当我设置的默认值属性,我怎么给它一个参数,它是一个颜色类型? 如果我给一个int,如0x5555FF,那么稍后当我在Visual Studion的Designer中, 如果我点击我的控件实例上的Backcolor属性,然后RightClick属性并选择“Reset”,那么我得到一个错误: “类型'System.Int32'的对象不能转换为'System.Drawing.Color'类型。”

IDE期望DefaultValue属性中的值为一个Color结构体,而不是一个int .. 但是,在属性中我无法发送Color结构,那么解决方案是什么?

非常感谢您

回答

1

1)不要在构造函数中,是 2)操作方式为RGB格式:

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

[默认值(typeof运算(颜色),“255,0, 0“)] 工程太棒了!非常感谢您 – Omer 2014-12-02 14:06:29

+0

然而,“公众覆盖颜色的BackColor {获得;设置;}”的一部分,使我TextBo出现一个黑色背景..只有当我把它写了很长的路要走:公共\t覆盖\t颜色\t背景色 \t \t { \t \t \t得到\t \t {\t return(base.BackColor); \t \t} \t \t \t \t设置{\t \t \t base.BackColor =值; \t \t} \t \t}那么它工作正常..为什么? – Omer 2014-12-02 14:06:59

+0

@Omer:长途调用基本类型的BackColor,它实际上改变了颜色(使用Win32魔术)。简短版本是一个自动属性,基本上只是将派生类中的颜色存储在新字段中,并且不会对其执行任何操作。 – siride 2014-12-02 14:21:44