上面形式的窗体,实现窗体的任何部分都可实现拖动
首先需要引入非托管代码,直接调用windows api
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd,
int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
DllImportAttribute微软官网msdn解释为:
指示该属性化方法由非托管动态链接库 (DLL) 作为静态入口点公开。
然后再在窗体的Form_MouseDown事件下添加如下代码
private void Form_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
还需要注意的是如要使用DllImportAttribute属性需要引入相应的名称空间 即 using System.Runtime.InteropServices;
以上代码便可实现窗体的任何部分都能实现窗体的拖动效果。