I need a WinForms user control which allows users to build custom user controls within an application. It needs to be generic enough so that I can import these controls into a WinForms project and configure which controls the user can include in the custom control (ie textboxes, drop down lists, buttons, other custom controls that have been created, etc) and the properties to be set on each of the selected controls (ie Text, width, height, datasource, custom properties, etc.)
There may need to be two controls developed - the control that allows user to build custom controls, and the control which becomes that custom control.
The layout control should provide the user a left pane with all the available controls (textbox etc), a center pane which is the canvas for laying out the control, and a right pane for properties. The user should be able to drag a control from the left pane onto the center pane, move it around as desired, and set properties on each of these controls by selecting the control and having its configurable properties appear on the right pane. The canvas size will also be configurable. When the user saves the control, its definition should be saved to a set of SQL database tables, or perhaps into a single table with a column that stores the entire definition in serialized JSON? Also, these controls will need to be able to be opened and edited so the configuration control will need to be able to load an existing definition for further editing.
The other control which will become the custom control will need to accept a parameter in its constructor for the ID of the custom control definition, read the definition, and configure the control. The size of the control should be set to autosize grow/shrink.