-
2022-06-05 12:08:09
上代码!
this.Hide(); Form1 f = new Form1(); f.ShowDialog(); this.Close();
那么有人就有疑问了,这难道最后不会只关掉最后一个新建窗口吗?
no no no,还是你们肤浅了,注意,我使用的是ShowDialog()而非Show(),
那ShowDialog()又是什么意思呢?简单的理解,就是等待ShowDialog()的窗口关闭后再执行接下来的代码,这里有一点递归的感觉。
好了,这就是在winform下最简实现方法了,再见~
更多相关内容 -
winform关闭当前form_c#关闭窗体的四种方法
2021-04-12 18:07:431. close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。如果有托管线程也无法退出。 此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了以下两...关闭窗体的四种方法
1. close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。如果有托管线程也无法退出。
此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了以下两种情况:(1)该窗体是多文档应用程序(MDI)的一部分并且此窗体不可见;(2)此窗体是“模态”窗体。
close() 方法执行的时候会触发两个事件:Form_Closing 和 Form_Closeed 事件,Form_Closing 是在窗体关闭时执行,Form_Closed 是在窗体关闭之后执行,所以如果想取消关闭窗体,可以在 Form_Closing 事件里取消。
2. Application.Exit(): 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出。
3. Application.ExitThread(): 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题。
4. System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。 参数0:代表程序正常退出;参数1:代表程序非正常退出。
close() 和 dispose() 的区别
close():这个方法会自动调用 dispose()方法。
dispose():这个方法的作用是释放组件使用的所有资源,.NET 提供的垃圾自动回收机制,可以帮我们自动回收垃圾对象,可是垃圾回收器只能回收“托管资源”,而不能回收“非托管资源”,而且垃圾回收器也并不是立即回收,而是每隔一段时间才会回收一次,每次回收的时间我们都不知道。
所以 dispose() 方法是为了弥补这种机制所产生的方法,调用 dispose(true) 方法可以释放“托管”和“非托管”资源,而且它可以不必等待垃圾回收器来自动释放,调用此方法可以显示释放资源。
Form.show() 和 Form.ShowDialog() 的区别
From.Show():窗体显示出来的是非模态窗体
From.ShowDialog():窗体显示出来的是模态窗体,而且点击窗体右上角的关闭按钮时,它不是调用 close() 方法,而是调用 hide() 方法。所以它并不是真正的关闭,再调用此方法窗体还会出现。而非模态窗体,点击关闭的时候,会调用 close() 方法,再次调用 Show() 方法,就会报错,因为窗体对象已被释放。
托管资源 和 非托管资源
托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象
非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象等
如果某类型使用到了非托管资源,那么,就需要让此类型继承接口IDisposable。需要显示释放资源,因为垃圾回收器并不会回收非托管资源。
-
c#关闭窗体的四种方法
2020-12-19 03:30:21close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。如果有托管线程也无法退出。此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了以下两种...关闭窗体的四种方法
1. close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。如果有托管线程也无法退出。
此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了以下两种情况:(1)该窗体是多文档应用程序(MDI)的一部分并且此窗体不可见;(2)此窗体是“模态”窗体。
close() 方法执行的时候会触发两个事件:Form_Closing 和 Form_Closeed 事件,Form_Closing 是在窗体关闭时执行,Form_Closed 是在窗体关闭之后执行,所以如果想取消关闭窗体,可以在 Form_Closing 事件里取消。
2. Application.Exit(): 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出。
3. Application.ExitThread(): 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题。
4. System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。 参数0:代表程序正常退出;参数1:代表程序非正常退出。
close() 和 dispose() 的区别
close():这个方法会自动调用 dispose()方法。
dispose():这个方法的作用是释放组件使用的所有资源,.NET 提供的垃圾自动回收机制,可以帮我们自动回收垃圾对象,可是垃圾回收器只能回收“托管资源”,而不能回收“非托管资源”,而且垃圾回收器也并不是立即回收,而是每隔一段时间才会回收一次,每次回收的时间我们都不知道。
所以 dispose() 方法是为了弥补这种机制所产生的方法,调用 dispose(true) 方法可以释放“托管”和“非托管”资源,而且它可以不必等待垃圾回收器来自动释放,调用此方法可以显示释放资源。
Form.show() 和 Form.ShowDialog() 的区别
From.Show():窗体显示出来的是非模态窗体
From.ShowDialog():窗体显示出来的是模态窗体,而且点击窗体右上角的关闭按钮时,它不是调用 close() 方法,而是调用 hide() 方法。所以它并不是真正的关闭,再调用此方法窗体还会出现。而非模态窗体,点击关闭的时候,会调用 close() 方法,再次调用 Show() 方法,就会报错,因为窗体对象已被释放。
托管资源 和 非托管资源
托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象
非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象等
如果某类型使用到了非托管资源,那么,就需要让此类型继承接口IDisposable。需要显示释放资源,因为垃圾回收器并不会回收非托管资源。
---------------------
作者:张伟杰-Vijay
来源:CSDN
原文:https://blog.csdn.net/zwj_jyzl/article/details/82316151
-
C#如何关闭FORM窗口
2020-12-29 16:12:09展开全部在设计e68a8462616964757a686964616f31333366303132界面双击需要关闭窗口的...//直接关闭当前窗口.以后可以再调用.3、this.dispose();//关闭当前窗口,以后不可以调用.扩展资料关于C#的程序执行C#所开发的程...展开全部
在设计e68a8462616964757a686964616f31333366303132界面双击需要关闭窗口的按钮后,跳到代码设计页面,然后输入:
1、this.hide();//这是隐藏当前窗口,但会继续占用资源.
2、this.close();//直接关闭当前窗口.以后可以再调用.
3、this.dispose();//关闭当前窗口,以后不可以调用.
扩展资料
关于C#的程序执行
C#所开发的程序源代码并不是编译成能够直接在操作系统上执行的二进制本地代码。与Java类似,它被编译成为中间代码,然后通过.NETFramework的虚拟机——被称之为通用语言运行库(CLR)——执行。 所有的.Net编程语言都被编译成这种被称为MSIL(Microsoft Intermediate Language )的中间代码。因此虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“.exe”的后缀名。
但是实际上,如果计算机上没有安装.Net Framework,那么这些程序将不能够被执行。 在程序执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区中。所以一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样如果一个.Net程序第二次被运行,那么这种翻译不需要进行第二次,速度明显加快。
-
C#之WinForm的代码 点击button关闭当前窗体,用this.close()
2020-12-19 03:30:38镇场诗:慈心与积善,以有为入无为。学术有小成,特来此分享。诚心说愿望,愿见文者的利益。//////////////////////////////////////////////////////////////////////////////////////////////////////////////////... -
winform打开新窗口,同时关闭原窗口的两种方法
2022-05-23 13:36:34//打开另一个窗口的同时关闭当前窗口 Thread th = new Thread(delegate () { new IndexForm().ShowDialog(); }); th.Start(); this.Close(); 方法二: IndexForm indexForm = new IndexForm(); this.Hide(); index... -
WinForm------如何跳转另一个窗口,同时关闭当前窗口
2019-04-16 16:28:02private void Btn_OK_Click(object sender, EventArgs e)... //打开另一个窗口的同时关闭当前窗口 Thread th = new Thread(delegate () { new Frm_Main().ShowDialog(); }); th.Start(); this.Close(); } ... -
winform子窗口关闭后,父窗口重新打开
2019-09-27 05:24:54父窗口 Main //学生档案管理 private void button1_Click(object sender, EventArgs e) { this.Enabled = false;//当前窗体不可用 StudentInfo si = new StudentInfo(this)... -
winform中关闭退出和打开新窗口的几种方式
2018-08-24 22:37:00//关闭当前窗口2.Application.Exit();//关闭所有窗口,退出应用程序 打开窗口的三种方式:1.从一个窗口打开另一个窗口新窗口对象.show()2.从一个窗口打开另一个对话框新窗口对象.showDialog()3.在一个窗口内部... -
C# WinForm 登陆成功关闭本窗体,打开主窗体的实现
2021-04-12 18:05:10首先在解决方案管理器(Program.cs)里的代码 static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault...//显示登陆窗体 if (Login.DialogResult == Dialo -
C# WinForm 关闭登陆窗体,打开主窗体的实现.
2021-03-22 08:59:28环境:开发环境Visual Studio 2010 Login.cs是登陆窗口 Main.cs是程序主窗口问题:一个WinForm程序登陆界面登陆成功后如何关闭登陆窗口显示主窗口?经菜鸟我多番搜索和实践。由下面方法实现:主要思想:程序运行后先... -
winfrom如何用代码关闭当前页面
2021-10-18 19:54:23只要写一个this.close();就行了 把这个放在一个控件的单击事件中,点一下就可以关闭当前页面了 -
Winform 关闭应用程序的所有窗体
2021-04-29 08:53:05Application.Exit();//关闭应用程序的所有窗体 -
C# WinForm关闭所有子窗口的方法
2021-05-21 10:06:25// 遍历并关闭所有子窗口 FormCollection childCollection = Application.OpenForms; for (int i = childCollection.Count; i-- > 0;) { if (childCollection[i].Name != “父窗口标题”) childCollection[i].... -
WinForm关闭主窗体后,仍然有后台进程运行。
2021-01-06 17:05:33关闭窗体 在c#中退出WinForm程序包括有很多...只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 2.Application.Exit();强制所有消息中止,退出所有的... -
winform的子窗体关闭刷新主窗体绑定数据以及刷新的总结
2021-04-06 11:28:191.其实实现主窗体的刷新无非就是比较简单的调用load事件重新加载数据绑定,但是这样的效果会带来,无状态刷新,页面无法保存上一次的页面状态,比如 刷新前 刷新后 ,如果点击刷新按钮执行的话,那么树形菜单... -
winform单击按钮时打开新窗口、关闭所有窗口
2021-02-07 19:36:45启动窗体程序——单击窗体1的按钮就会启动窗体2——单击窗体2的按钮就会启动窗体3——单击窗体3就会关闭所有窗口 启动窗体程序 单击窗体1的按钮 单击窗体2的按钮 单击窗体3的按钮关闭了所有窗口。 实现步骤 ... -
WinForm窗体关闭程序退出实现
2020-07-05 15:09:35只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 2.Application.Exit(); 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净... -
C# WinForm窗口关闭的几种常用方法
2018-04-23 10:22:55只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;2.Application.Exit(); 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无... -
winform 点击取消时关闭窗体并提示
2022-03-15 09:09:40public void button2_Click(object ... DialogResult result = MessageBox.Show("您确认关闭当前窗口吗?", "操作提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { . -
Winform中的关闭和退出
2022-03-03 16:26:57一、Winfrom中的关闭 1.1、是否显示关闭右上角的最大最小关闭按钮 public partial class UIComponetForm : DevExpress.XtraEditors.XtraForm ... //是否显示窗体右上角的关闭按钮(False表示关闭) -
C# winform 打开新窗体 关闭当前窗体
2016-04-06 15:44:00Form1 的Button 下 { Form2 f2 = new Form2(); f2.ShowDialog(this);// this.Close(); } Form2 的load 下 ...//只能隐藏不能关闭 this.owner.hide(); } 转载于:https://www.cnblogs.com/hanke123/... -
winform退出/关闭窗体时,弹窗温馨提示
2022-04-30 18:36:34在实际开发过程中,为避免误碰关闭按钮,常常在点击关闭按钮后,弹出一个弹框,提示用户是否退出,这可以通过【重写窗口关闭函数FormClosing】实现: 1、双击窗体事件【FormClosing】,通过写入【MessageBox.Show】... -
Winform中怎样重写窗体关闭事件实现验证密码通过才能关闭窗体
2021-09-30 17:36:21需要在Winform中执行一些定时器,需要该窗体一直开启,防止因点击窗体的关闭误操作。所以需要在点击叉号进行关闭时验证一个密码,密码正确则允许关闭,否则不允许关闭。 效果如下: 注: 博客:BADAO_LIUMANG_... -
关于winform如何如在关闭一个窗口时打开另外一个窗口
2020-12-20 03:38:22我们在做winform时会有一个非常常见的功能,比如有一个专门用来登陆的窗体,一般来说登陆的窗体点击登陆后会关闭当前登陆的这个窗体打开程序的主窗体。如果直接想的话就会写出private void btnLogin_Click(object ... -
c#winform关闭窗口时触发的事件
2020-12-19 03:31:11用户关闭软件时,软件一般会给“是否...如果该窗体是主窗体,我们想在该窗体关闭时关闭整个应用程序,会遇到至少两种情况:(1)该窗体同时是启动窗体,即它是应用程序中所有窗体的父类,则整个应用程序会被关闭。(2... -
winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体
2018-07-20 22:21:57winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体,搜集了几个方法,列举如下: 一 、 所有权法 父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始化方法。如: ... -
Winform 当前窗口跳转目标窗口关闭时资源的释放
2017-12-08 17:54:12Winform 当前窗口点击按钮后,隐藏当前窗口,打开新的窗口。 如在新的窗口关闭时,再次打开可能会导致异常。所以要对其进行释放。 private void button1_Click(object sender, EventArgs e) { Form2 ... -
C# Winform在MDI中打开一个子窗体关闭上一个子窗体
2013-12-12 15:09:22C# Winform在MDI中打开一个子窗体关闭上一个子窗体 -
c# Winform 保存上一次窗体关闭的属性
2021-07-26 11:46:07二、在关闭窗体的时候,触发FormClosing事件 动态获取页面的值,存储到(Properties.Settings.Default.名称)内 如: 三、下面就是在加载窗体时在构造函数中去加载这些数据,如果Settings.settings里值为空的话,如...