第二个窗体首先加载,直到第一个窗体关闭后,主窗体才可见
本文关键字:窗体 加载 第二个 第一个 | 更新日期: 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();
通过这种方式,主表单已经完全加载,因此您可以显示另一个表单。