开发者

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 expecte开发者_开发技巧d 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.


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.


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;
     }
}


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜