C#WinForm移动窗口时最大化但不是全屏,副作用

时间:2018-03-20 08:32:13

标签: c# forms winforms move maximize

我将表单的MaximumSize设置为一个值,这样当用户按下最大化按钮时,表单仍然显示为窗口,而不是全屏。这有效,但有两个副作用,我不想要:

  1. 窗口自动移动到左上角 屏幕;
  2. 当我用鼠标移动窗口时,它会自动显示     在按下最大化按钮之前调整大小。
  3. 如何避免这些副作用?

    编辑:有没有办法在按下最大化按钮时水平居中表格?

1 个答案:

答案 0 :(得分:0)

您可以覆盖WndProc以捕获MaximumSize事件 像这样

    private const int SC_MAXIMIZE = 0xF030;
    private const int WM_SYSCOMMAND = 0x0112;
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_SYSCOMMAND)
        {
            if (m.WParam == new IntPtr(SC_MAXIMIZE))
            {
                this.Size = this.MaximumSize;
                return;
            }
        }
        base.WndProc(ref m);
    }

这可以解决你的问题, 但是,不建议违背操作系统的设计。这将导致对接问题,这违背了用户的期望