私は複数のフォームを一度に開くC#アプリケーションを作成しています。これは現在、まずフォームをすべて開いてからコンテンツを読み込んで動作します。フォームを強制的に開き、内容をロードしてから、次のフォームを開きますか?別のものを開く前にフォームの読み込みを行うには?
繰り返しアクションは、複数のフォームを一度に開くトリガーです。
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ShowForms();
Application.Run();
}
static void ShowForms()
{
Random random = new Random();
int formCount = 0;
RepeatAction(5,() =>
{
formCount++;
int x = random.Next(0, 1000);
int y = random.Next(0, 1000);
Form1 form = new Form1
{
StartPosition = FormStartPosition.Manual,
ShowInTaskbar = false,
Location = new Point(x, y)
};
form.FormClosed += (sender, e) =>
{
if (--formCount > 0)
{
return;
}
Application.ExitThread();
};
form.Show();
});
}
Winformsには「コンテンツを読み込む」アクションはありません。これはフォームオブジェクトを構築するときに実行され、そのInitializeComponent()メソッドはコンストラクタによって呼び出されます。ほとんどのプログラマは、完全にペイントされたものと混同しています。これは、コントロールやビットマップでいっぱいになったフォームでしばらく時間がかかります。表示されたイベントはそのために使用可能で、Update()を呼び出してコントロールがペイントされていることを確認します。 –