Formクラスを継承したクラスで、WndProc()メソッドをオーバーライドし、WM_SYSCOMMANDでのSC_MOVE, SC_TASKLIST, SC_RESTOREの各メッセージに対して、デフォルトの処理を行わないことでウィンドウの移動をキャンセルする。

public class Form1 : System.Windows.Forms.Form
{
    // 途中略

    // WndProcメソッドをオーバーライド
    protected override void WndProc( ref Message m )
    {
        const int WM_SYSCOMMAND = 0x0112;
        const int SC_RESTORE    = 0xf120;
        const int SC_TASKLIST   = 0xf130;
        const int SC_MOVE       = 0xf010;

        // メッセージがWM_SYSCOMMANDの時
        if ( m.Msg == WM_SYSCOMMAND ) 
        {
            // 下位4ビット以外を取得
            int command = m.WParam.ToInt32() & 0xfff0;

            if ( command == SC_MOVE || command == SC_TASKLIST || command == SC_RESTORE ) 
            {
                // 戻り値に0を指定する
                m.Result = IntPtr.Zero;
            }
            else
            {
                // デフォルトの処理を行う
                base.WndProc( ref m );
            }
        }
        else
        {
            // デフォルトの処理を行う
            base.WndProc( ref m );
        }
    }
}