在打开窗口B时不要关闭窗口A,而是将窗口A隐藏掉A.Hide(); Form B = new Form(); B.Show();并且要在窗口B的FormB_Close事件中添加如下代码把应用程序的进程关闭:Application.Exit();
更正: 上述应该是FormB_Closing事件中添加Application.Exit()代码
“它的子对象B必然也会关闭”你这句话已经说到关键点上了, 所以,只要不让B作为A的子对象就可以了。定义一个全局的类MyApplictionpublic class MyAppliction { public Form1 A; public Form2 B; }然后在main里这样做MyAppliction.A = new Form1(); Appliction.Run(MyAppliction.A);在A中想打开B的时候就MyAppliction.B = new Form2(); MyAppliction.B.Show();
Form B = new Form();
B.Show();并且要在窗口B的FormB_Close事件中添加如下代码把应用程序的进程关闭:Application.Exit();
所以,只要不让B作为A的子对象就可以了。定义一个全局的类MyApplictionpublic class MyAppliction
{
public Form1 A;
public Form2 B;
}然后在main里这样做MyAppliction.A = new Form1();
Appliction.Run(MyAppliction.A);在A中想打开B的时候就MyAppliction.B = new Form2();
MyAppliction.B.Show();
如果要关闭,释放A窗体,那么作为局部变量的B窗体自然也就关闭了
最好的办法就是将B窗体设置为全局变量,不和A相关
VB中也就是这样做的,在程序初始化时就创建了几个全局的窗体,就
可以很自然顺便的访问了,在C# 中也要设置为全局变量才好实现的~~
1、将启动代码写在一个新建类(如 Common.cs)中。
2、在启动方法中写入下代码:
[STAThread]
static void Main(string[] commands)
{
new FormA().Show();
Application.Run();
}
3、在FormA的 Closing 事件中 加入代码
new FormB().Show();
4、提醒: 一定要在最后一个窗口的 Closed 事件中加入
Application.Exit() // 否则程序将不会被关闭 消息循环将一直被继续