The issue is:
The MouseMove Event is being called, however, its the mouse move event on the Panel! not on the shape!
The best way to fix this problem is simply to handle the MouseMove Event of the panel and move the control like this:
note: you have to make myShape variable have class scope, rather than method scope.
private void myShape_MouseMove(object sender, MouseEventArgs e)
myShape.Location = e.Location();
also, you have to protect yourself because MouseMove is going to get called a lot and more importantly BEFORE the control may be on the panel, so you need to write some code to make sure the MouseMove does nothing until the control is actually been put on the form. One possibility is just to use a flag to be false and make it change to true in the MouseDown event. Make sure you protect against threading issues by using a lock.