This topic has not yet been rated - Rate this topic

ComponentDesigner Class

Extends the design mode behavior of a component.

Namespace:  System.ComponentModel.Design
Assembly:  System.Design (in System.Design.dll)
public class ComponentDesigner : ITreeDesigner, 
	IDesigner, IDisposable, IDesignerFilter, IComponentInitializer

The ComponentDesigner type exposes the following members.

  Name Description
Public method ComponentDesigner Initializes a new instance of the ComponentDesigner class.
Top
  Name Description
Public property ActionLists Gets the design-time action lists supported by the component associated with the designer.
Public property AssociatedComponents Gets the collection of components associated with the component managed by the designer.
Public property Component Gets the component this designer is designing.
Protected property InheritanceAttribute Gets an attribute that indicates the type of inheritance of the associated component.
Protected property Inherited Gets a value indicating whether this component is inherited.
Protected property ParentComponent Gets the parent component for this designer.
Protected property ShadowProperties Gets a collection of property values that override user settings.
Public property Verbs Gets the design-time verbs supported by the component that is associated with the designer.
Top
  Name Description
Public method Dispose() Releases all resources used by the ComponentDesigner.
Protected method Dispose(Boolean) Releases the unmanaged resources used by the ComponentDesigner and optionally releases the managed resources.
Public method DoDefaultAction Creates a method signature in the source code file for the default event on the component and navigates the user's cursor to that location.
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Attempts to free resources by calling Dispose(false) before the object is reclaimed by garbage collection. (Overrides Object.Finalize().)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Protected method GetService Attempts to retrieve the specified type of service from the design mode site of the designer's component.
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method Initialize Prepares the designer to view, edit, and design the specified component.
Public method InitializeExistingComponent Reinitializes an existing component.
Public method InitializeNewComponent Initializes a newly created component.
Public method InitializeNonDefault Obsolete. Initializes the settings for an imported component that is already initialized to settings other than the defaults.
Protected method InvokeGetInheritanceAttribute Gets the InheritanceAttribute of the specified ComponentDesigner.
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method OnSetComponentDefaults Obsolete. Sets the default properties for the component.
Protected method PostFilterAttributes Allows a designer to change or remove items from the set of attributes that it exposes through a TypeDescriptor.
Protected method PostFilterEvents Allows a designer to change or remove items from the set of events that it exposes through a TypeDescriptor.
Protected method PostFilterProperties Allows a designer to change or remove items from the set of properties that it exposes through a TypeDescriptor.
Protected method PreFilterAttributes Allows a designer to add to the set of attributes that it exposes through a TypeDescriptor.
Protected method PreFilterEvents Allows a designer to add to the set of events that it exposes through a TypeDescriptor.
Protected method PreFilterProperties Allows a designer to add to the set of properties that it exposes through a TypeDescriptor.
Protected method RaiseComponentChanged Notifies the IComponentChangeService that this component has been changed.
Protected method RaiseComponentChanging Notifies the IComponentChangeService that this component is about to be changed.
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Explicit interface implemetation Private method IDesignerFilter.PostFilterAttributes For a description of this member, see the IDesignerFilter.PostFilterAttributes method.
Explicit interface implemetation Private method IDesignerFilter.PostFilterEvents For a description of this member, see the IDesignerFilter.PostFilterEvents method.
Explicit interface implemetation Private method IDesignerFilter.PostFilterProperties For a description of this member, see the IDesignerFilter.PostFilterProperties method.
Explicit interface implemetation Private method IDesignerFilter.PreFilterAttributes For a description of this member, see the IDesignerFilter.PreFilterAttributes method.
Explicit interface implemetation Private method IDesignerFilter.PreFilterEvents For a description of this member, see the IDesignerFilter.PreFilterEvents method.
Explicit interface implemetation Private method IDesignerFilter.PreFilterProperties For a description of this member, see the IDesignerFilter.PreFilterProperties method.
Explicit interface implemetation Private property ITreeDesigner.Children For a description of this member, see the ITreeDesigner.Children property.
Explicit interface implemetation Private property ITreeDesigner.Parent For a description of this member, see the ITreeDesigner.Parent property.
Top

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.

  1. To the root object itself, which is returned by the IDesignerHost.RootComponent property, because you are inheriting from its base class.

  2. 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.

The following code example provides an example ComponentDesigner implementation and an example component associated with the designer. The designer implements an override of the Initialize method that calls the base Initialize method, an override of the DoDefaultAction method that displays a MessageBox when the component is double-clicked, and an override of the Verbs property accessor that supplies a custom DesignerVerb menu command to the shortcut menu for the component.


using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Windows.Forms;

namespace ExampleComponent
{	
    // Provides an example component designer.
    public class ExampleComponentDesigner : System.ComponentModel.Design.ComponentDesigner
    {
        public ExampleComponentDesigner()
        {
        }

        // This method provides an opportunity to perform processing when a designer is initialized.
        // The component parameter is the component that the designer is associated with.
        public override void Initialize(System.ComponentModel.IComponent component)
        {
            // Always call the base Initialize method in an override of this method.
            base.Initialize(component);
        }

        // This method is invoked when the associated component is double-clicked.
        public override void DoDefaultAction()
        {
            MessageBox.Show("The event handler for the default action was invoked.");
        }

        // This method provides designer verbs.
        public override System.ComponentModel.Design.DesignerVerbCollection Verbs
        {
            get
            {
                return new DesignerVerbCollection( new DesignerVerb[] { new DesignerVerb("Example Designer Verb Command", new EventHandler(this.onVerb)) } );
            }
        }

        // Event handling method for the example designer verb
        private void onVerb(object sender, EventArgs e)
        {
            MessageBox.Show("The event handler for the Example Designer Verb Command was invoked.");
        }
    }

    // Provides an example component associated with the example component designer.
    [DesignerAttribute(typeof(ExampleComponentDesigner), typeof(IDesigner))]
    public class ExampleComponent : System.ComponentModel.Component
    {		
        public ExampleComponent()
        {
        }
    }
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ