BaseBeepParentControlDesigner
The abstract base designer for container/parent Beep controls — provides shape-aware design surface interaction with smart-tag support
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
IComponentChangeServiceduringInitialize() - Auto-combines
CommonBeepControlActionListwith control-specific lists - Read-only property guard in SetProperty()
- Separate class tree from leaf designers — enables future
ParentControlDesignermigration - Container-appropriate hit testing and shape-aware rendering
Properties & Methods
| Member | Type | Visibility | Description |
|---|---|---|---|
| ChangeService | IComponentChangeService | protected | For undo and serialization |
| BeepControl | BaseControl | protected | Casts Component to BaseControl |
| ActionLists | DesignerActionListCollection | public override | Common + control-specific lists |
| SetProperty | void (string, object) | public | TypeDescriptor-based set with IsReadOnly guard |
| GetProperty | T GetProperty<T>(string) | public | TypeDescriptor-based get |
| ApplyTheme | void ApplyTheme() | public | Calls BeepControl?.ApplyTheme() |
| GetControlSpecificActionLists | abstract ... | protected | Override for control-specific smart-tags |
vs BaseBeepControlDesigner
| Aspect | BaseBeepControlDesigner | BaseBeepParentControlDesigner |
|---|---|---|
| Purpose | Leaf (non-container) controls | Container/parent controls |
| SetStyle() convenience | Yes | No |
| IsReadOnly guard | No | Yes |
| Shape-aware | No | Yes |
| Hit testing | Standard | Standard |
| Derived designers | BeepDocumentHostDesigner, BeepFormsDesigner | Grid, 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)
};
}
}