我正在将Visual Studio 2017用于某个项目

如何在关闭父窗体之前先加载子窗体,而不同时关闭两个窗体

这样做只会关闭应用程序而不会加载下一个表单:

private void button_Click(object sender, EventArgs e) {
    Form2 f2 = new Form2();
    f2.Show();
    this.Close();
}


编辑:问题改写

最佳答案

由于Application.Run(new Form1())中的Programm.cs,应用程序已关闭。

这是winforms应用程序的默认模板,假定您将仅使用一种(主)窗体关闭该窗体将终止应用程序。

我假设您仅将表单称为父/子,但它们不是MDI,也没有设置Owner属性。而是两种形式,其中有条件地显示第二个(单击右按钮时)。可以通过DialogResult传递此条件。

将您的Main方法更改为类似以下内容:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    // Application.Run(new Form1()); - don't use this anymore

    var form1 = new Form1();
    if(form1.ShowDialog() == DialogResult.XXX)
        (new Form2()).ShowDialog();
}


和按钮单击事件可以:

void button_Click(object sender, EventArgs e) => DialogResult.XXX;


这将关闭表格并返回指定值。

如果没有其他OK没问题,则必须自己choose return value

关于c# - 如何在关闭父窗体之前先加载子窗体,而不同时关闭两个窗体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55473298/

10-13 06:30