第二个窗体首先加载,直到第一个窗体关闭后,主窗体才可见

本文关键字:窗体 加载 第二个 第一个 | 更新日期: 2023-09-27 18:24:43

我需要先加载主窗体,然后再加载第二个窗体作为它上面的对话框。当我尝试以下操作时,proFileDialog加载,mnuForm保持隐藏,直到我关闭proFileDialog我可以将其绑定到计时器,但为了学习c#,它为什么加载不正常,以及如何使其正常运行?

private void mnuForm_Load(object sender, EventArgs e)
{
    this.FormBorderStyle = FormBorderStyle.None;
    this.WindowState = FormWindowState.Maximized;
    using (Form proFileDialog = new Form())
    {
        proFileDialog.Text = "Some new form";
        proFileDialog.FormBorderStyle = FormBorderStyle.None;
        proFileDialog.Opacity = 100;
        proFileDialog.StartPosition = FormStartPosition.CenterScreen;
        // form.Controls.Add(...);
        proFileDialog.ShowDialog();
    }
}

第二个窗体首先加载,直到第一个窗体关闭后,主窗体才可见

根据MSDN关于Windows窗体中事件顺序的文档,控件在Load事件之后才可见。

尝试在您的mnuForm上订阅Shown活动,并将代码放入其中。这是mnuForm启动时运行的最后一个事件,mnuForm应该已经可见。

此外,您的profileDialog表格将只显示一次:

"显示"事件仅在第一次显示表单时引发;随后最小化、最大化、恢复、隐藏、显示或无效和重新绘制不会引发此事件。

根据MSDN,FormLoad事件发生在表单显示之前。由于您将第二个表单显示为对话框,因此在FormLoad事件完成之前,它将停止在该行。您可以在主窗体中创建一个函数,该函数将被调用以显示模式对话框:

public void ShowProfileDialog()
{
    Form proFileDialog = new Form();
    profileDialog.ShowDialog()
}

调用主窗体时:

mnuForm mainform = new mnuForm();
mnuForm.Show();
mnuForm.ShowProfileDialog();

通过这种方式,主表单已经完全加载,因此您可以显示另一个表单。