一尘不染

使无边界表格可移动吗?

c#

有没有一种方法可以使没有边框(FormBorderStyle设置为“ none”)的窗体在鼠标上单击时就像出现边框一样移动?


阅读 294

收藏
2020-05-19

共1个答案

一尘不染

文章在CodeProject细节的技术。基本上可以归结为:

public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool ReleaseCapture();

private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{     
    if (e.Button == MouseButtons.Left)
    {
        ReleaseCapture();
        SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
    }
}

从窗口管理器的角度来看,这基本上与抓取窗口的标题栏 完全相同

2020-05-19