public class MyTextBox : TextBox { private string m_MyProperty; public MyTextBox { this.m_MyProperty = ""; } [DefaultValue("")] public string MyProperty { get {return this.m_MyProperty;} set {this.m_MyProperty = value;} } [DefaultValue(typeof(Color), "Window")] public override Color BackColor { get {return base.BackColor;} set {base.BackColor = value;} } [DefaultValue(typeof(Color), "WindowText")] public override Color ForeColor { get {return base.ForeColor;} set {base.ForeColor= value;} } }Setting some of these properties doesn't always work as you would expect them to ... one that comes to mind is "Text" ... you may or may not have problems setting a default for that one, depending on which control you're sub-classing. Also, some properties aren't virtual and can't be overridden. For those properties, you can use "new" instead of "override".