C# Windows Form Перемещение формы за любой объект
public Form1()
{
InitializeComponent();
this.MouseDown += MouseMoveForm;
//label1.MouseDown += MouseMoveForm;
//button1.MouseDown += MouseMoveForm;
//pictureBox1.MouseDown += MouseMoveForm;
}
private void MouseMoveForm(object sender, MouseEventArgs e)
{
base.Capture = false; // <- Основной объект "Окно формы"
// указываем все объекты за которые можно перетаскивать форму
// label1.Capture = false;
// button1.Capture = false;
// pictureBox1.Capture = false;
Message m = Message.Create(base.Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
this.WndProc(ref m);
}
public Form1()
{
InitializeComponent(); this.MouseDown += MouseMoveForm;
}
private void MouseMoveForm(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
private const int WM_NCLBUTTONDOWN = 0x00A1;
private const int HT_CAPTION = 0x0002;
[DllImport("user32.dll")]
private static extern bool ReleaseCapture();
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);