C#Winform如何更改表单非客户区域大小?

时间:2018-01-02 08:15:50

标签: c# windows winforms winapi

我已经实现了对非客户区域大小的更改,但遇到了问题。

Click here see demo.jpg

  

Bug:每当我最大化窗口并再次恢复它的宽度时   并且身高会增加。

这是我的代码:

<a href="/FrontEnd/SearchPartsResult?Page=2" rel="next">»</a>

1 个答案:

答案 0 :(得分:0)

我最终试图拦截WM_WINDOWPOSCHANGED消息来控制它:

    private void WmWindowPosChanged(ref Message m)
    {
        base.WndProc(ref m);

        curWindowState = this.WindowState;

        if (curWindowState == FormWindowState.Maximized || curWindowState == FormWindowState.Minimized
            && preWindowState == FormWindowState.Normal)
        {
            restoreRectangle = this.RestoreBounds;
        }

        if (curWindowState == FormWindowState.Normal
            && preWindowState == FormWindowState.Maximized || curWindowState == FormWindowState.Minimized)
        {
            if (restoreRectangle != Rectangle.Empty)
                this.Size = restoreRectangle.Size;

            restoreRectangle = Rectangle.Empty;
        }

        preWindowState = curWindowState;
    }