ウィンドウハンドルが作成された後、ウィンドウが実際に表示される前にLoad
、イベントが発生するはずだと読みました。ほとんどの場合、これは真実のようです。ただし、(VS デザイナーを介して、またはコンストラクターでプログラムによって)プロパティを設定してフォームを作成すると、イベントが発生する前にウィンドウが表示されることがわかりました。例えば:WindowState
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
が、それでもウィンドウが表示され、すべてのコントロールのサイズが変更されるため、多くのちらつきが発生します。
何かご意見は?