通过鼠标拖动无边框窗口

时间:2011-01-22 12:36:27

标签: c# winforms drag

  

可能重复:
  C# - Make a borderless form movable?

我通过设置

在C#中创建了一个没有边框的表单

this.FormBorderStyle = FormBorderStyle.None;

现在,问题是如何用鼠标拖动它?

2 个答案:

答案 0 :(得分:23)

这应该是您正在寻找的"Enhanced: Drag and move WinForms"

public partial class MyDraggableForm : 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;
    }
    public MyDraggableForm()
    {
        InitializeComponent();
    }
}

正如博客文章所述,这是一种“欺骗”系统的方法。这样您就不需要考虑鼠标上/下事件了。

答案 1 :(得分:2)

您必须注册MouseDown,MouseUp和MouseMove事件,并根据鼠标的移动移动表单。