Click here to Skip to main content
15,880,608 members
Articles / Desktop Programming / Windows Forms
Tip/Trick

Dragging a Borderless Form

Rate me:
Please Sign up or sign in to vote.
4.94/5 (9 votes)
12 Jun 2010CPOL 31.2K   7   9
A code snippet which makes a borderless form draggable.
I was looking through some old C# projects on my external hard drive, when I stumbled upon the following code snippet, which makes a borderless form draggable.

C#
protected override void WndProc(ref Message m)
{
    if (m.Msg == 163 && this.ClientRectangle.Contains(this.PointToClient(new Point(m.LParam.ToInt32()))) && m.WParam.ToInt32() == 2)
        m.WParam = (IntPtr)1;
    base.WndProc(ref m);
    if (m.Msg == 132 && m.Result.ToInt32() == 1)
        m.Result = (IntPtr)2;
}


This makes the form draggable by clicking and dragging anywhere on the form itself (that is, not on controls unless they are disabled).

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Student
Denmark Denmark

New biography coming sometime.
Green Alien | [Alien]


Comments and Discussions

 
QuestionContainers? Pin
HiMik200331-May-10 23:08
HiMik200331-May-10 23:08 
AnswerRe: Containers? Pin
Kristian Sixhøj31-May-10 23:12
Kristian Sixhøj31-May-10 23:12 
GeneralRe: Containers? Pin
HiMik200331-May-10 23:32
HiMik200331-May-10 23:32 
GeneralRe: Containers? Pin
Kristian Sixhøj31-May-10 23:37
Kristian Sixhøj31-May-10 23:37 
GeneralRe: Containers? Pin
HiMik200331-May-10 23:44
HiMik200331-May-10 23:44 
GeneralRe: Containers? Pin
Kristian Sixhøj31-May-10 23:59
Kristian Sixhøj31-May-10 23:59 
I found one.. Here you go:

int formStartX, formStartY, dragStartX, dragStartY;

private void progressBar1_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        formStartX = this.Left;
        formStartY = this.Top;
        dragStartX = formStartX + e.X;
        dragStartY = formStartY + e.Y;
    }
}        

private void progressBar1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        this.Left = formStartX + ((this.Left + e.X) - dragStartX);
        this.Top = formStartY + ((this.Top + e.Y) - dragStartY);
    }
}


Hope you'll find it useful Smile | :)
Green Alien | [Alien] Kristian Sixhoej
I have noticed even people who claim everything is predestined,
and that we can do nothing to change it, look before they cross the road.
- Stephen Hawking

GeneralRe: Containers? Pin
HiMik20031-Jun-10 0:39
HiMik20031-Jun-10 0:39 
AnswerRe: Containers? Pin
Dima Popov13-Jul-10 3:27
Dima Popov13-Jul-10 3:27 
GeneralRe: Containers? Pin
HiMik200315-Jul-10 3:40
HiMik200315-Jul-10 3:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.