Dinesh
Dinesh

Reputation: 2066

How to make a window Draggable(C# Winforms)?

I have form. I have enabled the transparency on the form and I have removed it's Title Bar and Border. Inside that i have created a Custom UI, Which have the same features like a window. Basically, my idea is to create custom window.

Everything is working as expected but only the windows dragging is not working. I am not sure how to enable it. I googled for this. But i didn't find any useful info for me.

Please help me to implement this window dragging.

Upvotes: 2

Views: 2918

Answers (3)

arpl
arpl

Reputation: 3633

class YourForm : Form
{
     private const int WM_NCHITTEST = 0x84;
     private const int HTCLIENT = 0x1;
     private const int HTCAPTION = 0x2;

     ///
     /// Handling the window messages 
     ///
     protected override void WndProc(ref Message message)
     {
          base.WndProc(ref message);

          if (message.Msg == WM_NCHITTEST && (int)message.Result == HTCLIENT)
               message.Result = (IntPtr)HTCAPTION;
     }
}

Upvotes: 1

Anton Tykhyy
Anton Tykhyy

Reputation: 20086

The easiest way is to process WM_NCHITTEST message and return HTCAPTION for the portions of your custom window which work like the title bar does in a normal window. Windows will do the rest.

Upvotes: 0

Cyril Gupta
Cyril Gupta

Reputation: 13723

I've implemented this behavior by capturing mousedown (uncapture on mouseup), and then mousemove.

Just move the form co-ordinates (left, top), equivalent amounts to the mouse movement (those events have the amount the mouse moved).

This worked fine for me.

Upvotes: 5

Related Questions