Я прочитал, что событие 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
, но это все еще вызывает много мерцания, потому что окно становится видимым, а затем все элементы управления изменяют размер.
Есть мысли?