关于C#:通过鼠标拖动无边界窗口表单

Drag borderless windows form by mouse

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
C# - Make a borderless form movable?

我通过设置

在C#中制作了一个无边框的表格

this.FormBorderStyle = FormBorderStyle.None;

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


这应该是您在寻找的"增强功能:拖放WinForms"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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();
    }
}

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


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