【.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); }