The ComponentDesigner base designer class provides a simple designer that can extend the behavior of an associated component in design mode.
ComponentDesigner provides an empty IDesignerFilter interface implementation, whose methods can be overridden to adjust the attributes, properties and events of the associated component at design time.
You can associate a designer with a type using a DesignerAttribute. For an overview of customizing design-time behavior, see Extending Design-Time Support.
The ComponentDesigner class implements a special behavior for the property descriptors of inherited components. An internal type named InheritedPropertyDescriptor is used by the default ComponentDesigner implementation to stand in for properties that are inherited from a base class. There are two cases in which these property descriptors are added.
To the root object itself, which is returned by the IDesignerHost..::.RootComponent property, because you are inheriting from its base class.
To fields found in the base class of the root object. Public and protected fields from the base class are added to the designer so that they can be manipulated by the user.
The InheritedPropertyDescriptor class modifies the default value of a property, so that the default value is the current value at object instantiation. This is because the property is inherited from another instance. The designer defines resetting the property value as setting it to the value that was set by the inherited class. This value may differ from the default value stored in metadata.