Meinst Du ungefähr so etwas?
https://www.youtube.com/watch?v=8-mcMRl46Aw
Wenn Du nichts fertiges findest, kann ich mal die Quellen mal raussuchen (das war aber in ein komplexeres Framework eingebettet).
Du müsstest halt mal Versuche mit Drag&Drop machen.
Grundsätzlich muss man sich sich die Klickposition (X/Y) auf dem Control merken und dann auf MouseMove über dem eigenen Control reagieren.
Dazu setzt man das Control dann auf an die aktuelle Mausposition -X/Y.
Dabei muss man aber die Positionen relativ zum Parent berücksichtigen und auch, dass sich die Maus über dem Parent oder anderen Controls bewegen kann.
Das "runterziehen von der Palette" ist etwas komplizierter. Da kann man ein neues Control auf den Designer setzen und dafür StartDrag aufrufen...