c#如何使窗户形成不可移动和再次移动

时间:2013-08-19 16:11:08

标签: c# winforms

我有一个Windows窗体,当用户点击按钮时,我想让它不可移动,当用户再次点击按钮时,它会再次移动。

我在这里找到了这个解决方案:How do you prevent a windows from being moved?

但它是一个覆盖,所以我认为这是为了使表格永远不可移动。

有任何线索吗? 感谢

1 个答案:

答案 0 :(得分:2)

只要一面旗帜:

private bool _preventMove = false;

protected override void WndProc(ref Message message)
{
    const int WM_SYSCOMMAND = 0×0112;
    const int SC_MOVE = 0xF010;

    if(_preventMove) 
    {
        switch(message.Msg)
        {
            case WM_SYSCOMMAND:
               int command = message.WParam.ToInt32() & 0xfff0;
               if (command == SC_MOVE)
                  return;
               break;
        }
    }

    base.WndProc(ref message);
}

将标志设置为true / false以禁用/启用移动