通过最大化按钮调整窗体大小时不会触发ResizeEnd事件?

时间:2016-09-23 05:16:09

标签: c# .net winforms events resize

在我的应用程序中,通过拖动角来调整窗体大小时会触发ResizeEnd事件,但是当我单击最大化按钮时不会触发它。

Resize事件在我的方案中不起作用,因此我需要使用ResizeEnd事件。

为什么在通过最大化按钮调整表单大小时不会触发此事件?或者任何人都可以提出替代方案吗?

1 个答案:

答案 0 :(得分:6)

当用户完成表单大小调整时,会引发ResizeEnd事件,通常是拖动其中一个边框或位于表单右下角的大小调整夹,然后释放它。当用户移动表单时也会引发它。

如果出于任何原因需要最大化窗口导致提升ResizeEnd事件,您可以通过这种方式举起活动:

const int WM_SYSCOMMAND = 0x0112;
const int SC_MAXIMIZE = 0xF030;
protected override void WndProc(ref Message m)
{
    base.WndProc(ref m);
    if (m.Msg == WM_SYSCOMMAND) 
    {
        if (m.WParam == (IntPtr)SC_MAXIMIZE) 
        {
            //the window has been maximized
            this.OnResizeEnd(EventArgs.Empty);
        }
    }
}

请注意

  • 当表单最大化时,也会引发Resize事件。
  • 如果您想处理自定义布局,Layout事件是合适的事件。
相关问题