当前位置:
首页 > Python基础教程 >
-
C#教程之C#中关闭子窗口而不释放子窗口对象的方
1 在主窗口中实例化子窗口
在主窗口中实例化子窗口,而不是在按钮中实例化子窗口对象。
Form2 f2 = new Form2();
2 通过按钮来显示主窗口
在按钮中需要实现的是窗口的显示
private void Config_Click(object sender, EventArgs e) { f2.Show(); }
3 关闭子窗口而不释放子窗口对象的方法
经查询和实证,修改子窗口中Dispose(在子窗口设计器中寻找修改)的方法是可行的。更改如下:
protected override void Dispose(bool disposing) { Hide(); //if (disposing && (components != null)) //{ // components.Dispose(); //} //base.Dispose(disposing); }
4 在父窗口关闭时销毁子窗口对象
由于需要在父窗口关闭是销毁子窗口对象,因此,在父窗口的关闭动作FormClosed中添加调用子窗口f2的销毁函数。
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { f2.Close(); }
子窗口类中添加的关闭函数如下:
public void Close() { this.Dispose(); }
出处:http://blog.csdn.net/u013698770/article/details/53521180
----------------------------------------------------------------------------------------------------------
另外还有一种方式:
子窗体定义一个委托,父窗体实例化子窗体时注册子窗体的委托事件(具体功能是实现父窗口的控件变化),子窗体关闭时调用事件方法。
父窗体
public void ShowPopWindow() { TestA sub = new TestA(); sub.CloseWindow += new Action(sub_CloseWindow); sub.show(); } void sub_CloseWindow() { //改变父窗体控件内容 }
子窗体
public class TestA { public event Action CloseWindow; protected virtual void OnCloseWindow() { Action handler = CloseWindow; if (handler != null) handler(); } //子窗体关闭事件 private void CloseSubWindow() { OnCloseWindow(); } }
出处:https://zhidao.baidu.com/question/134623114688436765.html
------------------------------------------------------------------------------------------------------------------
根据上面的说明,我们自己实现自己的功能,我的功能其实很简单,就一行代码,释放资源,
Form2 fui = null; private void button1_Click(object sender, EventArgs e) { if (fui == null) fui = new userUserInfo(); fui.MdiParent = this; fui.FormClosed += delegate(object obj, FormClosedEventArgs arg) { fui = null; }; fui.Show(); fui.Activate(); }
但需要注意,在 fui.FormClosed += delegate(object obj, FormClosedEventArgs arg) { fui = null; };中使用的参数,不要和按钮事件中参数名相同,注意参数冲突。
出处:http://www.cnblogs.com/mq0036/p/6492960.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式