This is a complicated task, and understanding the SharpDevelope code isn't an unreasonable way to begin your task. If, on the other hand, you are not actually trying to duplicate all of the functionality, (maybe you only want labels, text boxes, and buttons on your forms), you could try simply writing the thing from scratch in a way that seems logical to you. This method requires using the container form's .Capture property in order to catch the clicks that normally would have set the focus to the child control, allowing you to select and move the controls. John :D