C#-窗体移动
#region 窗体移动API[DllImport("user32.dll")]public static extern bool ReleaseCapture();[DllImport("user32.dll")]public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int IParam);public const int WM_SYSCOMMAND = 0x0112;public const int SC_MOVE = 0xF010;public const int HTCAPTION = 0x0002;[DllImport("user32")]private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, IntPtr lParam);private const int WM_SETREDRAW = 0xB;#endregion//窗体拖拽(包含双击最大化,根据两次点击的point判断是拖拽还是双击、坐标保存在SetForm.Tag)textBox1.MouseDown += delegate{if (this.Tag != null && ((int[])this.Tag)[0] == Control.MousePosition.X && ((int[])this.Tag)[1] == Control.MousePosition.Y){if (this.WindowState != FormWindowState.Maximized){this.Opacity = 0;this.Tag = null;this.WindowState = FormWindowState.Maximized;}else{this.Tag = null;this.WindowState = FormWindowState.Normal;//InvalidateRect(IntPtr.Zero, IntPtr.Zero, true);}}else{this.Tag = new int[2] { Control.MousePosition.X, Control.MousePosition.Y };}//刷新桌面if (this.WindowState == FormWindowState.Normal){ReleaseCapture();SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);}};
总结
- 上一篇: C#-窗体鼠标穿透
- 下一篇: C#-获取页面源代码