方法一:(这个方法未测试通过)

关闭子窗体后

1
2
3
4
5
6
form2.Closed += (ss,ee)=> { this.Close(); };
//或Application.OpenForms集合找到要关闭的窗口,再Close:
foreach (var item in Application.OpenForms)
{
if (item is Form1) item.Close();
}

方法二:(可行)

1
2
3
4
5
B new_form = new B();
new_form.owner = this;
this.hide();
new_form.showdialog();
Application.ExitThread();

Application.ExitThread();是退出当前线程。
首先默认情况下我们的程序是单线程的,
this.hide();后把当前窗体隐藏起来了,然后new_form.showdialog();模态弹出新窗口。
这个时候线程不会继续执行(被阻塞了),
直到我们关闭了新弹出来的模态窗口后,程序才会继续执行Application.ExitThread();此时线程关闭,所有一切都关闭了,隐藏的窗口也关闭了。


相关链接

  1. C# winForm 窗口跳转 后关闭上一个窗口的方法

=================我是分割线=================

欢迎到公众号来唠嗑: