Я читал, что событие Load
должно запускаться после создания дескриптора окна, но доокно действительно становится видимым. По большей части это кажется правдой. Однако я обнаружил, что при создании формы со свойством WindowState
установлено значение FormWindowState.Развернутое
(либо через конструктор 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
, но это все равно вызывает сильное мерцание, потому что окно становится видимым, а затем все элементы управления изменить размер.
Есть мысли?