通过最大化按钮调整窗体大小时不会触发ResizeEnd事件
本文关键字:事件 ResizeEnd 小时 最大化 按钮 调整 窗体 | 更新日期: 2023-09-27 18:08:20
在我的应用程序中,当通过拖动角来调整窗体大小时触发ResizeEnd
事件,但当我单击最大化按钮时不会触发它。
Resize
事件在我的场景中不起作用,所以我需要使用ResizeEnd
事件。
为什么在通过最大化按钮调整表单大小时没有触发此事件?或者有人能提出替代方案吗?
当用户完成窗体的大小调整时,通常通过拖动窗体右下角的一个边框或大小控制手柄,然后释放它,引发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
事件是一个合适的事件。