通过最大化按钮调整窗体大小时不会触发 ResizeEnd 事件?
ResizeEnd event is not triggered when resizing the form by maximize button?
在我的应用程序中,ResizeEnd
事件在通过拖动角调整窗体大小时触发,但在我单击最大化按钮时不会触发。
Resize
事件在我的场景中不起作用,所以我需要使用 ResizeEnd
事件。
为什么在通过最大化按钮调整窗体大小时没有触发此事件?或者有人可以提出替代方案吗?
当用户完成调整窗体大小时引发 ResizeEnd
事件,通常是通过拖动边框之一或位于窗体右下角的尺寸控制点,然后释放它。当用户移动表单时也会引发。
如果出于任何原因您需要最大化 window 引发 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);
}
}
}
备注
在我的应用程序中,ResizeEnd
事件在通过拖动角调整窗体大小时触发,但在我单击最大化按钮时不会触发。
Resize
事件在我的场景中不起作用,所以我需要使用 ResizeEnd
事件。
为什么在通过最大化按钮调整窗体大小时没有触发此事件?或者有人可以提出替代方案吗?
当用户完成调整窗体大小时引发 ResizeEnd
事件,通常是通过拖动边框之一或位于窗体右下角的尺寸控制点,然后释放它。当用户移动表单时也会引发。
如果出于任何原因您需要最大化 window 引发 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);
}
}
}
备注