将拖动行为添加到FormBorderStyle设置为“无”的窗体中

本文关键字:窗体 FormBorderStyle 拖动 添加 设置 | 更新日期: 2023-09-27 17:54:05

可能重复:
C#-使无边界窗体可移动?

如果将表单的FormBorderStyle设置为None,则会丢失表单的拖动行为,正如预期的那样。

我已经在表单顶部添加了一个自定义栏,我希望它保持这种状态,现在可以将表单保持在这种模式并进行(或写入(拖动行为吗?

如果可能的话,我该怎么做。我真的希望找到一个是的,这是可能的答案:(

将拖动行为添加到FormBorderStyle设置为“无”的窗体中

private const Int32 WM_NCHITTEST = 0x84;
private const Int32 HTCLIENT = 0x1;
private const Int32 HTCAPTION = 0x2;
protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_NCHITTEST)
    {
        base.WndProc(ref m);
        if ((Int32)m.Result == HTCLIENT)
            m.Result = (IntPtr)HTCAPTION;
        return;
    }
    base.WndProc(ref m);
}