请问窗体的“隐藏”和“关闭”有什么区别? Hide()方法和Close()方法造成的结果有哪些不同? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 分别调试Form2 form = new Form2();form.Show();form.Close();form.Show(); //将报异常和Form2 form = new Form2();form.Show();form.Hide();form.Show();你就清楚两者的关系了 窗体程序是单线程的Close()是关闭 也就是关闭当前线程 退出程序Hide()是隐藏 从另一方面来说也算是关闭 举一个很简单的例子frmLogin frm=new frmLogin();frm.Close();//程序运行结束frm.Hide();//只是隐藏改窗体,但是程序正常运行 Close,比如说,它会通知mdi的父窗口自己已经退出,会设置自己内部一些标志使得控件不再参与windows消息泵的处理流程同时也不再刷新,会从父窗口的children集合中把自己删除掉,通知窗口图标系统关闭(假设在windows系统托盘上注册了图标的话),转移windows系统窗口输入焦点,等等很多事情要做。其实这些东西不可能仅靠死记硬背,对于微软来讲也不可能是靠概要设计去列举所有细节的。细节都是在不断的测试中被加入进来的。而不是最初设计窗体这个概念时就搞出来的。 Hide,隐藏了,但是还在,你看不到。Cllse,关闭了,没了,对象资源完全释放。 你可以在自己的开发中以测试为准,多做预想中的测试用例设计,不要满脑子都是编程序。这样你就不必太早就去在意这类东西,而一旦遇到bug就可以快速重构。比如说,如果你发觉自动注销windows系统托盘上的图标,这是“逻辑设计”中提及的需求,那么就可以去测试,这时候你可能会发觉使用Close很干净利落地实现,而如果使用Hide之后则需要额外写许多代码才能事项注销托盘。那么这时候就轻松自然地使用Close就可以了。没有必要过于死抠概念。(如果你要理解细节,应该基于.net framework的源代码去自己随时查看,不要靠死记硬背) 我有个疑问,form.Close()之后,form既没有被Dispose掉,也没有立即被Finalize掉,为什么会报异常? 占不占据资源什么的我不能很好地理解。一个窗口类它自己的InitializeComponents方法,在它被构造的时候就已经调用,从而这个窗口实例内部的控件也已经被构造。执行Close()方法后,这个窗口示例以及它拥有的控件的资源都释放掉了?也就是说一个TextBox成员中已有的Text不复存在?我再执行Show()方法(假设可以执行,这个我还真不知道),TextBox会被重新构造?假如是真的,我没有在窗口类定义内找到相应的依据。Hide()我可以理解,就相当于看见与看不见的区别。但是Close()对我来说还是有疑点。 说的挺好,这东西看来挺复杂。我就想知道一个事,那就是Close()之后,这窗体实例是否已经准备好要Garbage Collection了?假如不是,那么我再次用Show()之后,里面控件的状态(所有属性和字段的值,以及它们跟踪句柄所指向的内容)会跟以前一样吗?假如是,那么意思就是,这个Close()方法的作用其实就是告诉CLR,这窗口实例你可以GC了? C#界面问题 网站快捷方式怎么做出来的 Remoting 的一个问题 如何读取文件名含有参数的文件阿 .net中textbox在运行的时候输不进字去怎么回事啊 excel的工作区是怎样做的?有没有类似的例子! 重新构造TreeView结构的问题 怎样判断textBox里输入的日期格式正确? 求助求助,俺是新手,正在做FTP协议上传,遇到一个难题请高手帮忙解决一下 关于数据类型的转换. 請問這個怎麼用Array數組完成?? 帮小弟改下程序
form.Show();
form.Close();
form.Show(); //将报异常
和
Form2 form = new Form2();
form.Show();
form.Hide();
form.Show();你就清楚两者的关系了
Close()是关闭 也就是关闭当前线程 退出程序Hide()是隐藏 从另一方面来说也算是关闭
frm.Close();//程序运行结束
frm.Hide();//只是隐藏改窗体,但是程序正常运行
Cllse,关闭了,没了,对象资源完全释放。
你可以在自己的开发中以测试为准,多做预想中的测试用例设计,不要满脑子都是编程序。这样你就不必太早就去在意这类东西,而一旦遇到bug就可以快速重构。比如说,如果你发觉自动注销windows系统托盘上的图标,这是“逻辑设计”中提及的需求,那么就可以去测试,这时候你可能会发觉使用Close很干净利落地实现,而如果使用Hide之后则需要额外写许多代码才能事项注销托盘。那么这时候就轻松自然地使用Close就可以了。没有必要过于死抠概念。(如果你要理解细节,应该基于.net framework的源代码去自己随时查看,不要靠死记硬背)
我有个疑问,form.Close()之后,form既没有被Dispose掉,也没有立即被Finalize掉,为什么会报异常?
一个窗口类它自己的InitializeComponents方法,在它被构造的时候就已经调用,从而这个窗口实例内部的控件也已经被构造。
执行Close()方法后,这个窗口示例以及它拥有的控件的资源都释放掉了?也就是说一个TextBox成员中已有的Text不复存在?我再执行Show()方法(假设可以执行,这个我还真不知道),TextBox会被重新构造?假如是真的,我没有在窗口类定义内找到相应的依据。
Hide()我可以理解,就相当于看见与看不见的区别。但是Close()对我来说还是有疑点。
说的挺好,这东西看来挺复杂。我就想知道一个事,那就是Close()之后,这窗体实例是否已经准备好要Garbage Collection了?假如不是,那么我再次用Show()之后,里面控件的状态(所有属性和字段的值,以及它们跟踪句柄所指向的内容)会跟以前一样吗?假如是,那么意思就是,这个Close()方法的作用其实就是告诉CLR,这窗口实例你可以GC了?