1. 设置窗体无边框
设计器属性中设置:
或者代码中设置:
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
2. WinAPI帮助类
public class WinAPI
{
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
public const int MOUSEWHEEL = 0x020A;
[DllImportAttribute("user32.dll")]
internal static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
internal static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
[DllImportAttribute("user32.dll")]
internal static extern bool ReleaseCapture();
}
3. 窗体上使用
设计器属性中设置鼠标移动事件
或者代码中
// 给窗体增加鼠标移动事件
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.FrmLogin_MouseMove);
// 鼠标移动事件内,调用WinAPI实现拖拽功能
private void FrmLogin_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
WinAPI.ReleaseCapture();
WinAPI.SendMessage(Handle, WinAPI.WM_NCLBUTTONDOWN, WinAPI.HT_CAPTION, 0);
}
}