Overview

Namespace: TheTechIdea.Beep.Winform.Controls.Design.Server.Designers
Assembly: TheTechIdea.Beep.Winform.Controls.Design.Server.dll
Inheritance: Microsoft.DotNet.DesignTools.Designers.ControlDesigner
Implements: IBeepDesignerActionHost

BaseBeepParentControlDesigner is the abstract base class for container/parent control designers. It mirrors BaseBeepControlDesigner structurally but exists as a separate class to allow future specialization (e.g., migrating to ParentControlDesigner).

It provides the same IComponentChangeService-backed property mutation pattern, smart-tag integration, and theme-aware design surface.

Key Features

  • Implements IBeepDesignerActionHost (same as BaseBeepControlDesigner)
  • Captures IComponentChangeService during Initialize()
  • Auto-combines CommonBeepControlActionList with control-specific lists
  • Read-only property guard in SetProperty()
  • Separate class tree from leaf designers — enables future ParentControlDesigner migration
  • Container-appropriate hit testing and shape-aware rendering

Properties & Methods

MemberTypeVisibilityDescription
ChangeServiceIComponentChangeServiceprotectedFor undo and serialization
BeepControlBaseControlprotectedCasts Component to BaseControl
ActionListsDesignerActionListCollectionpublic overrideCommon + control-specific lists
SetPropertyvoid (string, object)publicTypeDescriptor-based set with IsReadOnly guard
GetPropertyT GetProperty<T>(string)publicTypeDescriptor-based get
ApplyThemevoid ApplyTheme()publicCalls BeepControl?.ApplyTheme()
GetControlSpecificActionListsabstract ...protectedOverride for control-specific smart-tags

vs BaseBeepControlDesigner

AspectBaseBeepControlDesignerBaseBeepParentControlDesigner
PurposeLeaf (non-container) controlsContainer/parent controls
SetStyle() convenienceYesNo
IsReadOnly guardNoYes
Shape-awareNoYes
Hit testingStandardStandard
Derived designersBeepDocumentHostDesigner, BeepFormsDesignerGrid, Chart, Calendar, Dock, etc.

Examples

[Designer(typeof(MyContainerDesigner))]
public class MyContainer : BaseControl
{
    public MyContainer() { IsContainerControl = true; }
}

public class MyContainerDesigner : BaseBeepParentControlDesigner
{
    protected override DesignerActionListCollection GetControlSpecificActionLists()
    {
        return new DesignerActionListCollection
        {
            new MyContainerActionList(Component)
        };
    }
}