WinForm无边框窗体拖拽功能的实现
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 MO
·
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);
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)