How do I make mousedrag inside Panel move form window?

后端 未结 5 1055
陌清茗
陌清茗 2021-02-08 19:34

I have this System.Windows.Forms.Panel that I want to enable so that if the user click and drags the mouse drags the window around to.

Can I do this? Do i have to implem

5条回答
  •  没有蜡笔的小新
    2021-02-08 20:21

    The Solution that works best for me is using unmanaged code, which gives you smooth window movements unlike the answer posted by HatSoft.

    3 small steps to drag your window on Panel movement

    using System.Runtime.InteropServices;
    

    add these six lines inside your class

    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();
    

    and your MouseMove event on Panel should look like this

    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {
       if (e.Button == MouseButtons.Left)
       {
          ReleaseCapture();
          SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
       }
    }
    

    posted it a little late :) , who knows we might need it again in future.

提交回复
热议问题