6
votes

In my application the ResizeEnd event is triggered when resizing the form by dragging the corners, but it will not be triggered when I click the maximize button.

The Resize event does not work in my scenario so I need to use ResizeEnd event.

Why is this event not triggered while resizing the form by maximize button? Or can anyone suggest alternatives?

1

1 Answers

10
votes

The ResizeEnd event is raised when the user finishes resizing a form, typically by dragging one of the borders or the sizing grip located on the lower-right corner of the form, and then releasing it. It also is raised when the user moves a form.

If for any reason you need maximizing the window cause raising the ResizeEnd event you can raise the event this way:

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);
        }
    }
}

Note

  • The Resize event is raised also when the form is maximized.
  • The Layout event is a suitable event if you want to handle a custom layout.