1

I would like to make certain panels within my Form draggable/movable. I have integrated:

    public const int WM_NCLBUTTONDOWN = 0xA1;
    public const int HT_CAPTION = 0x2;
    [DllImportAttribute("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
    [DllImportAttribute("user32.dll")]
    public static extern bool ReleaseCapture();

as per other answers I have found here. Along with:

    void pnlSettings_MouseMove(object sender, MouseEventArgs e)
    {
        Drag_Form(Handle, e);
    }
    public static void Drag_Form(IntPtr Handle, MouseEventArgs e){
        if (e.Button == MouseButtons.Left)
        {
          ReleaseCapture();
          SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
        }
    }

And what seems to happen is the whole Form moves instead of just the Panel(pnlSettings). I can't seem to figure out how to get the panel alone to move.

1 Answers1

0

Handle is the handle of the form.

You need to pass the .Handle of the control you want to move.

SLaks
  • 868,454
  • 176
  • 1,908
  • 1,964
  • So if I want to move pnlSettings (name of my Panel), does that mean I have to specifically tell all the Controls inside the Panel to move with it? Later edit: Nevermind. The answer is No. You were right, I just had to send: Drag_Form(pnlSettings.Handle, e); –  Oct 31 '16 at 16:55