【.Net】 实现窗口拖动

实现点击Form可以拖动窗口。

        #region 实现窗口拖动
        [DllImport("user32.dll")]
        public static extern bool ReleaseCapture();

        [DllImport("user32.dll")]
        public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);

        private void frm_MouseDown(object sender, MouseEventArgs e)
        {
            ReleaseCapture();
            SendMessage(this.Handle, 0x0112, 0xF012, 0);
        }
        #endregion
     //调用者
private void FormMain_MouseDown(object sender, MouseEventArgs e) { frm_MouseDown(this, e); }

以上只是窗体上没有控件的区域可以拖动,因为有控件的就出发控件的MouseDown事件了。

如果有比较要可批量注册控件的MouseDown事件。

但是要注意,不能注册可点击控件的事件,比如Button等需要接受点击事件的控件会失效。

foreach (Control c in  this.Controls)
        {
            if (!Type.Equals(c.GetType(), button1.GetType()))
                c.MouseDown += new System.Windows.Forms.MouseEventHandler(this.frm_MouseDown);
        }
原文地址:https://www.cnblogs.com/fjfjfjfjfjfj/p/3327121.html