c# 窗口关闭方法
2021-07-04 10:07
标签:event 方式 for 还需要 object 分享图片 png GridView 窗体 背景:点击datagridview某条信息弹出信息详情窗口,当连续点击时需要关闭之前的详情窗口。 实现方式: 父窗口中 全局创建子窗口(MsgDetailFrm ): MsgDetailFrm deFrm = new MsgDetailFrm(); 在datagridview的双击事件中: 但在实际操作时,点击详情窗口关闭,再次点击信息类表中某条信息时,报错,查看原因: 关闭窗口不为空! 也就是关闭窗口后, 但调用 deFrm.Show();时报错 全局变量中: MsgDetailFrm deFrm; deFrm = null; 在调用deForm时强制为null,重新实例化 细想之后,发现还是对窗口的关闭认识不清,以及不当的编程习惯造成。 解决方法: 1.在关闭窗口时释放窗口资源的同时,也将变量置为null; 2.换用彻底关闭窗口的方法。 补充:窗口关闭的几种方法比较 1.this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 2.Application.Exit(); 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出; 3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题; 4.System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。 一般情况下不需要给应用程序写退出函数,执行默认退出函数即可,但是有情况还需要用以上几种函数的。 c# 窗口关闭方法 标签:event 方式 for 还需要 object 分享图片 png GridView 窗体 原文地址:https://www.cnblogs.com/allencxw/p/9860498.html private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (deFrm==null)
{
deFrm = new MsgDetailFrm();
}
deFrm.Show();
}
deFrm!=null
修改:
deFrm = new MsgDetailFrm();
下一篇:WinFrom饼形图