我看到 Load
事件应该在窗口句柄创建后但在窗口实际可见前被触发。大部分情况下,这似乎是正确的。然而,当我创建一个 WindowState
属性设置为 FormWindowState.Maximized
的窗体(无论是通过 VS 设计器还是在构造函数中以编程方式设置),窗口在 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
事件结束,但这仍然会导致很多闪烁,因为窗口变得可见,然后所有控件都会重新调整大小。有什么想法吗?
Load
ن؛‹ن»¶ن¸çڑ„MessageBox.Show
ن¼ڑه¼؛هˆ¶وک¾ç¤؛çھ—ن½“م€‚ - LarsTechDock
或Anchor
属性或者TableLayoutPanel
呢?当我之后手动调整窗口大小时,你也会手动调整控件的大小吗? - Thorsten Dittmar