通过鼠标拖动无边框窗口

Jav*_*ram 6 c# drag winforms

可能重复:
C# - 使无边框形式可移动?

我通过设置在C#中创建了一个没有边框的表单

this.FormBorderStyle = FormBorderStyle.None;

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

Fil*_*erg 23

这应该是你正在寻找的"增强:拖动和移动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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 请记住,作为副作用,窗口将在双击时最大化窗口.[此答案](http://stackoverflow.com/a/1592899/855432)不会导致此问题. (3认同)