Установка WindowState в Maximized приводит к тому, что окно появляется слишком рано.

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

Есть мысли?

7
задан g t 2 July 2012 в 09:24
поделиться