c# 关于this.close() ;的问题

问题描述

if(hyw1.Read()){usersname=textBox1.Text;userskey=textBox2.Text;Form2f2=newForm2();f2.Show();this.close();}上面的this.close();会把当前的Form1和新生成的Form2都给关掉;但是如果是在这里privatevoidbutton2_Click(objectsender,EventArgse){Form4f4=newForm4();f4.Show();this.Close();}这个this.Close();就直会关闭当前窗体,不会关闭新生成的Form4;这是为什么?

解决方案

解决方案二:
你贴的不够完整
解决方案三:
把代码贴完整,才能帮你查问题
解决方案四:
Form1是主窗体他一关闭整个程序退出就是这么简单就好比你电脑上要开多少程序要关闭谁都无所谓可是你要是把操作系统关了(关机)那所有的程序都被关了然后你自己再整改你的逻辑吧
解决方案五:
打个断点,自己看它怎么跑不就知道了,现在都可以看到了
解决方案六:
主窗体不能关闭,不然其余的窗体都会关闭,所以用heid影藏吧
解决方案七:
3#已经说了,Form1是你的主窗体(当然主窗体不一定是Form1,得看Program.cs里面Application.Run(newFormxxx());这一句)。主窗体关了,整个应用程序结束了。你的button2_Click事件应该不是在Form1下面的
解决方案八:
1.close只是关闭了窗体,并没有将窗体对象释放,所以窗体对象中所拥有的对象仍然存在2.上面的是废话,你的对象在方法中创建的,是不是回收只和它的引用计数有关,现在引用当然存在,你的窗体还开着呢结论,本窗体关闭和你在本窗体某个方法中创建的其他窗体没有半毛钱关系,除非你设定了那个窗体是你这个窗体的子窗体
解决方案九:
第一种方法,this.Hide()隐藏当前窗体第二种方法this.Close()System.Threading.Threadthread=newSystem.Threading.Thread(delegate(){Form2frm2=newForm2();frm2.Show();});thread.Start();

解决方案十:
你告诉我,你到底想做什么?
解决方案十一:
你把主窗体关了,主线程跟着就结束了,接着所有的后台线程也就结束了。如果你不是想真正关闭主窗体就用hide,如果是真的要关闭主窗体,就开一个新线程(必须是前台线程)去打开其他窗体。
解决方案十二:
第一个是主窗体代码第二个是非主窗体代码
解决方案十三:
你要看this.Close这句所在的窗体是不是主窗体,如果是那会连子窗体一起关掉,如果不是,那是不会关闭子窗体。
解决方案十四:
Form1是你的主窗体(当然主窗体不一定是Form1,得看Program.cs里面Application.Run(newFormxxx());这一句)。主窗体关了,整个应用程序结束了。你的button2_Click事件应该不是在Form1下面的
解决方案十五:
main方法启动窗体A,在A窗体打开B窗体,关掉A窗体,B会随之消失。B的存在是以A为前提。

时间: 2024-11-01 03:21:26