Export (0) Print
Expand All

ParentControlDesigner Class

Extends the design mode behavior of a Control that supports nested controls.

Namespace:  System.Windows.Forms.Design
Assembly:  System.Design (in System.Design.dll)

public class ParentControlDesigner : ControlDesigner

The ParentControlDesigner type exposes the following members.

  NameDescription
Public methodParentControlDesignerInitializes a new instance of the ParentControlDesigner class.
Top

  NameDescription
Public propertyAccessibilityObjectGets the AccessibleObject assigned to the control. (Inherited from ControlDesigner.)
Public propertyActionListsGets the design-time action lists supported by the component associated with the designer. (Inherited from ComponentDesigner.)
Protected propertyAllowControlLassoGets a value indicating whether selected controls will be re-parented.
Protected propertyAllowGenericDragBoxGets a value indicating whether a generic drag box should be drawn when dragging a toolbox item over the designer's surface.
Protected propertyAllowSetChildIndexOnDropGets a value indicating whether the z-order of dragged controls should be maintained when dropped on a ParentControlDesigner.
Public propertyAssociatedComponentsGets the collection of components associated with the component managed by the designer. (Inherited from ControlDesigner.)
Public propertyAutoResizeHandlesInfrastructure. Gets or sets a value indicating whether resize handle allocation depends on the value of the AutoSize property. (Inherited from ControlDesigner.)
Protected propertyBehaviorServiceGets the BehaviorService from the design environment. (Inherited from ControlDesigner.)
Public propertyComponentGets the component this designer is designing. (Inherited from ComponentDesigner.)
Public propertyControlGets the control that the designer is designing. (Inherited from ControlDesigner.)
Protected propertyDefaultControlLocationGets the default location for a control added to the designer.
Protected propertyDrawGridGets or sets a value indicating whether a grid should be drawn on the control for this designer.
Protected propertyEnableDragRectGets a value indicating whether drag rectangles are drawn by the designer. (Overrides ControlDesigner.EnableDragRect.)
Protected propertyGridSizeGets or sets the size of each square of the grid that is drawn when the designer is in grid draw mode.
Protected propertyInheritanceAttributeGets the System.ComponentModel.InheritanceAttribute of the designer. (Inherited from ControlDesigner.)
Protected propertyInheritedGets a value indicating whether this component is inherited. (Inherited from ComponentDesigner.)
Protected propertyMouseDragToolGets a value indicating whether the designer has a valid tool during a drag operation.
Protected propertyParentComponentGets the parent component for the ControlDesigner. (Inherited from ControlDesigner.)
Public propertyParticipatesWithSnapLinesGets a value indicating whether the ControlDesigner will allow snapline alignment during a drag operation. (Inherited from ControlDesigner.)
Public propertySelectionRulesGets the selection rules that indicate the movement capabilities of a component. (Inherited from ControlDesigner.)
Protected propertyShadowPropertiesGets a collection of property values that override user settings. (Inherited from ComponentDesigner.)
Public propertySnapLinesGets a list of SnapLine objects representing significant alignment points for this control. (Overrides ControlDesigner.SnapLines.)
Public propertyVerbsGets the design-time verbs supported by the component that is associated with the designer. (Inherited from ComponentDesigner.)
Top

  NameDescription
Protected methodAddPaddingSnapLinesAdds padding snaplines.
Protected methodBaseWndProcProcesses Windows messages. (Inherited from ControlDesigner.)
Protected methodCanAddComponentInfrastructure. Called when a component is added to the parent container.
Public methodCanBeParentedToIndicates if this designer's control can be parented by the control of the specified designer. (Inherited from ControlDesigner.)
Public methodCanParent(Control)Indicates whether the specified control can be a child of the control managed by this designer.
Public methodCanParent(ControlDesigner)Indicates whether the control managed by the specified designer can be a child of the control managed by this designer.
Protected methodCreateTool(ToolboxItem)Creates a component or control from the specified tool and adds it to the current design document.
Protected methodCreateTool(ToolboxItem, Point)Creates a component or control from the specified tool and adds it to the current design document at the specified location.
Protected methodCreateTool(ToolboxItem, Rectangle)Creates a component or control from the specified tool and adds it to the current design document within the bounds of the specified rectangle.
Protected methodCreateToolCoreProvides core functionality for all the CreateTool methods.
Protected methodDefWndProcProvides default processing for Windows messages. (Inherited from ControlDesigner.)
Protected methodDisplayErrorDisplays information about the specified exception to the user. (Inherited from ControlDesigner.)
Public methodDispose()Releases all resources used by the ComponentDesigner. (Inherited from ComponentDesigner.)
Protected methodDispose(Boolean)Releases the unmanaged resources used by the ParentControlDesigner, and optionally releases the managed resources. (Overrides ControlDesigner.Dispose(Boolean).)
Public methodDoDefaultActionCreates a method signature in the source code file for the default event on the component and navigates the user's cursor to that location. (Inherited from ComponentDesigner.)
Protected methodEnableDesignModeEnables design time functionality for a child control. (Inherited from ControlDesigner.)
Protected methodEnableDragDropEnables or disables drag-and-drop support for the control being designed. (Inherited from ControlDesigner.)
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAttempts to free resources by calling Dispose(false) before the object is reclaimed by garbage collection. (Inherited from ComponentDesigner.)
Protected methodGetControlGets the control from the designer of the specified component.
Protected methodGetControlGlyphGets a body glyph that represents the bounds of the control. (Overrides ControlDesigner.GetControlGlyph(GlyphSelectionType).)
Public methodGetGlyphsGets a collection of Glyph objects representing the selection borders and grab handles for a standard control. (Overrides ControlDesigner.GetGlyphs(GlyphSelectionType).)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Protected methodGetHitTestIndicates whether a mouse click at the specified point should be handled by the control. (Inherited from ControlDesigner.)
Protected methodGetParentForComponentUsed by deriving classes to determine if it returns the control being designed or some other Container while adding a component to it.
Protected methodGetServiceAttempts to retrieve the specified type of service from the design mode site of the designer's component. (Inherited from ComponentDesigner.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodGetUpdatedRectUpdates the position of the specified rectangle, adjusting it for grid alignment if grid alignment mode is enabled.
Protected methodHookChildControlsRoutes messages from the child controls of the specified control to the designer. (Inherited from ControlDesigner.)
Public methodInitializeInitializes the designer with the specified component. (Overrides ControlDesigner.Initialize(IComponent).)
Public methodInitializeExistingComponentRe-initializes an existing component. (Inherited from ControlDesigner.)
Public methodInitializeNewComponentInitializes a newly created component. (Overrides ControlDesigner.InitializeNewComponent(IDictionary).)
Public methodInitializeNonDefault Obsolete. Initializes the settings for an imported component that is already initialized to settings other than the defaults. (Inherited from ComponentDesigner.)
Public methodInternalControlDesignerReturns the internal control designer with the specified index in the ControlDesigner. (Inherited from ControlDesigner.)
Protected methodStatic memberInvokeCreateToolCreates a tool from the specified ToolboxItem.
Protected methodInvokeGetInheritanceAttributeGets the InheritanceAttribute of the specified ComponentDesigner. (Inherited from ComponentDesigner.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodNumberOfInternalControlDesignersReturns the number of internal control designers in the ControlDesigner. (Inherited from ControlDesigner.)
Protected methodOnContextMenuShows the context menu and provides an opportunity to perform additional processing when the context menu is about to be displayed. (Inherited from ControlDesigner.)
Protected methodOnCreateHandleProvides an opportunity to perform additional processing immediately after the control handle has been created. (Inherited from ControlDesigner.)
Protected methodOnDragCompleteCalled in order to clean up a drag-and-drop operation. (Overrides ControlDesigner.OnDragComplete(DragEventArgs).)
Protected methodOnDragDropCalled when a drag-and-drop object is dropped onto the control designer view. (Overrides ControlDesigner.OnDragDrop(DragEventArgs).)
Protected methodOnDragEnterCalled when a drag-and-drop operation enters the control designer view. (Overrides ControlDesigner.OnDragEnter(DragEventArgs).)
Protected methodOnDragLeaveCalled when a drag-and-drop operation leaves the control designer view. (Overrides ControlDesigner.OnDragLeave(EventArgs).)
Protected methodOnDragOverCalled when a drag-and-drop object is dragged over the control designer view. (Overrides ControlDesigner.OnDragOver(DragEventArgs).)
Protected methodOnGiveFeedbackReceives a call when a drag-and-drop operation is in progress to provide visual cues based on the location of the mouse while a drag operation is in progress. (Inherited from ControlDesigner.)
Protected methodOnMouseDragBeginCalled in response to the left mouse button being pressed and held while over the component. (Overrides ControlDesigner.OnMouseDragBegin(Int32, Int32).)
Protected methodOnMouseDragEndCalled at the end of a drag-and-drop operation to complete or cancel the operation. (Overrides ControlDesigner.OnMouseDragEnd(Boolean).)
Protected methodOnMouseDragMoveCalled for each movement of the mouse during a drag-and-drop operation. (Overrides ControlDesigner.OnMouseDragMove(Int32, Int32).)
Protected methodOnMouseEnterReceives a call when the mouse first enters the control. (Inherited from ControlDesigner.)
Protected methodOnMouseHoverReceives a call after the mouse hovers over the control. (Inherited from ControlDesigner.)
Protected methodOnMouseLeaveReceives a call when the mouse first enters the control. (Inherited from ControlDesigner.)
Protected methodOnPaintAdornmentsCalled when the control that the designer is managing has painted its surface so the designer can paint any additional adornments on top of the control. (Overrides ControlDesigner.OnPaintAdornments(PaintEventArgs).)
Public methodOnSetComponentDefaults Obsolete. Called when the designer is intialized. (Inherited from ControlDesigner.)
Protected methodOnSetCursorProvides an opportunity to change the current mouse cursor. (Overrides ControlDesigner.OnSetCursor().)
Protected methodPostFilterAttributesAllows a designer to change or remove items from the set of attributes that it exposes through a TypeDescriptor. (Inherited from ComponentDesigner.)
Protected methodPostFilterEventsAllows a designer to change or remove items from the set of events that it exposes through a TypeDescriptor. (Inherited from ComponentDesigner.)
Protected methodPostFilterPropertiesAllows a designer to change or remove items from the set of properties that it exposes through a TypeDescriptor. (Inherited from ComponentDesigner.)
Protected methodPreFilterAttributesAllows a designer to add to the set of attributes that it exposes through a TypeDescriptor. (Inherited from ComponentDesigner.)
Protected methodPreFilterEventsAllows a designer to add to the set of events that it exposes through a TypeDescriptor. (Inherited from ComponentDesigner.)
Protected methodPreFilterPropertiesAdjusts the set of properties the component will expose through a TypeDescriptor. (Overrides ControlDesigner.PreFilterProperties(IDictionary).)
Protected methodRaiseComponentChangedNotifies the IComponentChangeService that this component has been changed. (Inherited from ComponentDesigner.)
Protected methodRaiseComponentChangingNotifies the IComponentChangeService that this component is about to be changed. (Inherited from ComponentDesigner.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Protected methodUnhookChildControlsRoutes messages for the children of the specified control to each control rather than to a parent designer. (Inherited from ControlDesigner.)
Protected methodWndProcProcesses Windows messages and optionally routes them to the control. (Inherited from ControlDesigner.)
Top

  NameDescription
Protected fieldaccessibilityObjSpecifies the accessibility object for the designer. (Inherited from ControlDesigner.)
Top

  NameDescription
Explicit interface implemetationPrivate methodIDesignerFilter.PostFilterAttributesFor a description of this member, see the IDesignerFilter.PostFilterAttributes method. (Inherited from ComponentDesigner.)
Explicit interface implemetationPrivate methodIDesignerFilter.PostFilterEventsFor a description of this member, see the IDesignerFilter.PostFilterEvents method. (Inherited from ComponentDesigner.)
Explicit interface implemetationPrivate methodIDesignerFilter.PostFilterPropertiesFor a description of this member, see the IDesignerFilter.PostFilterProperties method. (Inherited from ComponentDesigner.)
Explicit interface implemetationPrivate methodIDesignerFilter.PreFilterAttributesFor a description of this member, see the IDesignerFilter.PreFilterAttributes method. (Inherited from ComponentDesigner.)
Explicit interface implemetationPrivate methodIDesignerFilter.PreFilterEventsFor a description of this member, see the IDesignerFilter.PreFilterEvents method. (Inherited from ComponentDesigner.)
Explicit interface implemetationPrivate methodIDesignerFilter.PreFilterPropertiesFor a description of this member, see the IDesignerFilter.PreFilterProperties method. (Inherited from ComponentDesigner.)
Explicit interface implemetationPrivate propertyITreeDesigner.ChildrenFor a description of this member, see the ITreeDesigner.Children property. (Inherited from ComponentDesigner.)
Explicit interface implemetationPrivate propertyITreeDesigner.ParentFor a description of this member, see the ITreeDesigner.Parent property. (Inherited from ComponentDesigner.)
Top

ParentControlDesigner provides a base class for designers of controls that can contain child controls. In addition to the methods and functionality inherited from the ControlDesigner and ComponentDesigner classes, ParentControlDesigner enables child controls to be added to, removed from, selected within, and arranged within the control whose behavior it extends 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 following example demonstrates how to implement a custom ParentControlDesigner. This code example is part of a larger example provided for the IToolboxUser interface.

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

// This example contains an IRootDesigner that implements the IToolboxUser interface. 
// This example demonstrates how to enable the GetToolSupported method of an IToolboxUser 
// designer in order to disable specific toolbox items, and how to respond to the  
// invocation of a ToolboxItem in the ToolPicked method of an IToolboxUser implementation. 
namespace IToolboxUserExample
{
    // This example component class demonstrates the associated IRootDesigner which  
    // implements the IToolboxUser interface. When designer view is invoked, Visual  
    // Studio .NET attempts to display a design mode view for the class at the top  
    // of a code file. This can sometimes fail when the class is one of multiple types  
    // in a code file, and has a DesignerAttribute associating it with an IRootDesigner.  
    // Placing a derived class at the top of the code file solves this problem. A  
    // derived class is not typically needed for this reason, except that placing the  
    // RootDesignedComponent class in another file is not a simple solution for a code  
    // example that is packaged in one segment of code. 
    public class RootViewSampleComponent : RootDesignedComponent
	{
	}

	// The following attribute associates the SampleRootDesigner with this example component.
	[DesignerAttribute(typeof(SampleRootDesigner), typeof(IRootDesigner))]
	public class RootDesignedComponent : System.Windows.Forms.Control
	{
	}

    // This example IRootDesigner implements the IToolboxUser interface and provides a  
    // Windows Forms view technology view for its associated component using an internal  
    // Control type.      
    // The following ToolboxItemFilterAttribute enables the GetToolSupported method of this 
    // IToolboxUser designer to be queried to check for whether to enable or disable all  
    // ToolboxItems which create any components whose type name begins with "System.Windows.Forms".
    [ToolboxItemFilterAttribute("System.Windows.Forms", ToolboxItemFilterType.Custom)]
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] 
    public class SampleRootDesigner : ParentControlDesigner, IRootDesigner, IToolboxUser
    {
        // This field is a custom Control type named RootDesignerView. This field references 
        // a control that is shown in the design mode document window. 
        private RootDesignerView view;

        // This string array contains type names of components that should not be added to  
        // the component managed by this designer from the Toolbox.  Any ToolboxItems whose  
        // type name matches a type name in this array will be marked disabled according to   
        // the signal returned by the IToolboxUser.GetToolSupported method of this designer. 
        private string[] blockedTypeNames =
        {
            "System.Windows.Forms.ListBox",
            "System.Windows.Forms.GroupBox"
        };

        // IRootDesigner.SupportedTechnologies is a required override for an IRootDesigner. 
        // This designer provides a display using the Windows Forms view technology.
        ViewTechnology[] IRootDesigner.SupportedTechnologies 
        {
            get { return new ViewTechnology[] {ViewTechnology.Default}; }
        }

        // This method returns an object that provides the view for this root designer.  
        object IRootDesigner.GetView(ViewTechnology technology) 
        {
            // If the design environment requests a view technology other than Windows  
            // Forms, this method throws an Argument Exception. 
            if (technology != ViewTechnology.Default)            
                throw new ArgumentException("An unsupported view technology was requested", 
                "Unsupported view technology.");            

            // Creates the view object if it has not yet been initialized. 
            if (view == null)                            
                view = new RootDesignerView(this);          

            return view;
        }

        // This method can signal whether to enable or disable the specified 
        // ToolboxItem when the component associated with this designer is selected. 
        bool IToolboxUser.GetToolSupported(ToolboxItem tool)
        {       
            // Search the blocked type names array for the type name of the tool 
            // for which support for is being tested. Return false to indicate the 
            // tool should be disabled when the associated component is selected. 
            for( int i=0; i<blockedTypeNames.Length; i++ )
                if( tool.TypeName == blockedTypeNames[i] )
                    return false;

            // Return true to indicate support for the tool, if the type name of the 
            // tool is not located in the blockedTypeNames string array. 
            return true;
        }

        // This method can perform behavior when the specified tool has been invoked. 
        // Invocation of a ToolboxItem typically creates a component or components,  
        // and adds any created components to the associated component. 
        void IToolboxUser.ToolPicked(ToolboxItem tool)
        {
        }

        // This control provides a Windows Forms view technology view object that  
        // provides a display for the SampleRootDesigner.
        [DesignerAttribute(typeof(ParentControlDesigner), typeof(IDesigner))]
        internal class RootDesignerView : Control
        {
            // This field stores a reference to a designer. 
            private IDesigner m_designer;

            public RootDesignerView(IDesigner designer)
            {
                // Perform basic control initialization.
                m_designer = designer;
                BackColor = Color.Blue;
                Font = new Font(Font.FontFamily.Name, 24.0f);                
            }

            // This method is called to draw the view for the SampleRootDesigner. 
            protected override void OnPaint(PaintEventArgs pe)
            {
                base.OnPaint(pe);
                // Draw the name of the component in large letters.
                pe.Graphics.DrawString(m_designer.Component.Site.Name, Font, Brushes.Yellow, ClientRectangle);
            }
        }
    }
}

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

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.
Show:
© 2014 Microsoft