65.9K
CodeProject is changing. Read more.
Home

Dragging a Borderless Form

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2 votes)

Jul 13, 2010

CPOL
viewsIcon

6345

A slightly different solution.using System.Runtime.InteropServices;private const int WM_NCLBUTTONDOWN = 0xA1;private const int HTCAPTION = 0x2;[DllImport("User32.dll")]private static extern bool ReleaseCapture();[DllImport("User32.dll")]private static extern int...

A slightly different solution.
using System.Runtime.InteropServices;
private const int WM_NCLBUTTONDOWN = 0xA1;
private const int HTCAPTION = 0x2;

[DllImport("User32.dll")]
private static extern bool ReleaseCapture();
[DllImport("User32.dll")]
private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

public Form()
{
    InitializeComponent();
    AssignHandler(this);
}

private void AssignHandler(Control control)
{
    if (control is Form
        || control is Label
        || control is Panel
        || control is PictureBox
        || control is TableLayoutPanel)
    {
        control.MouseDown += Form_MouseDown;
    }
    foreach (Control subControl in control.Controls)
    {
        AssignHandler(subControl);
    }
}

private void Form_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        ReleaseCapture();
        SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    }
}