Missà che siamo in due a pensare a come si potrebbe fare
Ho allegato lo screenshot così puoi vedere dove sono arrivato, è da un po' che non ci metto mano perchè devo finire altre cose prima di riprenderlo.
Ah ho usato SOLO le API di Windows (quindi non ho usato le classi .NET che permettono di costruire facilmente un designer).
Io un idea ce l'avrei, ma non so se sia il modo migliore per farne uno...
I controlli (Button, Label, ListBox...), dovrebbero comportarsi tutti allo stesso modo, ovvero intercettare il messaggio WM_LBUTTONDOWN per spostare il controllo selezionato.
La form che funge da Designer, dovrebbe tenere traccia di tutti i componenti presenti al suo interno, così poi, è possibile generare il codice che serve per far apparire una finestra di quel tipo.
L'unico problema è far apparire il "Rettangolino" che si vede quando un controllo sul designer è selezionato e permettere di cambiare le sue dimensioni.
Non so se sono stato chiaro lo scritto un po' di fretta.