You can easily make a Form movable by implementing MouseDown, MouseUp, and MouseMove handlers. You could make it movable only when some special key is held down, or when you use the context-click mouse-button rather than the default, etc. To achieve this you will need to start by clicking on some portion of the Form that is not covered by a Control.
You could even click-drag on a MenuStrip to move the Form around, utilizing the same Events for the MenuStrip: of course you'll need to be starting the move by clicking on a portion of the MenuStrip that is not "covered" by a Control in the MenuStrip. For example:
private bool IsMouseUp = true;
private int mX;
private int mY;
private void menuStrip1_MouseDown(object sender, MouseEventArgs e)
{
IsMouseUp = false;
mX = e.X;
mY = e.Y;
}
private void menuStrip1_MouseUp(object sender, MouseEventArgs e)
{
IsMouseUp = true;
}
private void menuStrip1_MouseMove(object sender, MouseEventArgs e)
{
if (IsMouseUp) return;
this.Left += e.X - mX;
this.Top += e.Y - mY;
}