我读到该Load
事件应该在创建窗口句柄之后触发,但在窗口实际变为可见之前。在大多数情况下,这似乎是真的。但是,我发现当我创建一个WindowState
属性设置为的表单时(通过 VS 设计器,或在构造函数中以编程方式),窗口在事件触发FormWindowState.Maximized
之前变为可见。Load
例如:
using System;
using System.Windows.Forms;
namespace MyApplication
{
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
WindowState = FormWindowState.Maximized;
}
protected override void OnLoad(EventArgs e)
{
MessageBox.Show("OnLoad - notice that the window is already visible");
base.OnLoad(e);
}
}
}
这反过来会导致显示的表单Form.Load
在窗口可见时调整其控件(在事件期间布局)的大小时闪烁很多。如果我没有将状态设置为最大化,那么所有调整大小都会在显示窗口之前完成(这是我所期望的)。
我可以推迟设置WindowState
直到Load
事件结束,但这仍然会导致很多闪烁,因为窗口变得可见,然后所有控件都调整大小。
有什么想法吗?