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; };中使用的参数,不要和按钮事件中参数名相同,注意参数冲突。
转载于:https://www.cnblogs.com/mq0036/p/6492960.html
C#关闭子窗口而不释放子窗口对象的问题解决相关推荐
- qt如何把父窗口的变量传给子窗口_父窗口和iframe子窗口之间相互传递参数和调用函数或方法...
1.父窗口向子窗口传递参数: 可以在url中添加参数:2.html?a=1&b=2&c=3 然后在子页面上可用js解析,提供一个函数: function getQueryStr(sAr ...
- JS实现关闭当前子窗口,刷新父窗口及调用父窗口的方法
一.JS实现关闭当前子窗口,刷新父窗口 JS代码如下: <script> function refreshParent() { window.opener.location.href ...
- 2.6 子窗口赋值给父窗口并关闭子窗口 我的程序猿之路:第十六章
<s:textfield id="innovationName" cssClass="txt validate[maxSize[50]]"title=&q ...
- windows窗口分析,父窗口,子窗口,所有者窗口
(本文尝试通过一些简单的实验,来分析Windows的窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++.Windows编程及MFC经验,还得有一定动手能力.文中可能出现一些术语不统一的现象 ...
- window.open window.showModelDialog 打开一个新窗口/子窗口中调用父窗口的方法
window.open 只打开一个窗口是将 oNewWindow = window . open ( sURL , sName , sFeatures , ...
- 在框架内用top.layer.open方式打开的子窗口中调用父窗口方法
1.父窗口方法 function add() { //相关语句 } 2.父窗口打开子窗口 ,其他属性设置参考layer API top.layer.open({ id: "父窗口ID&quo ...
- [PYQT5] 主窗口弹出子窗口
需求: 在PYQT5中,点击主窗口中的按钮,弹出子窗口. 测试代码: 例1: 在主窗口添加按钮,并把按钮信号关联槽,在槽函数中创建子窗口对象赋值到普通变量,并调用其 show 方法. from PyQ ...
- QT 在子窗口中调用主窗口的UI
在QT中,我们时常会需要在主窗口里添加一些子窗口,比如添加一个新的对话框,或者在TabWidget中添加tab页面.通常添加子窗口后,如果在子窗口中做了一些操作,我们需要在主窗口中通过UI控件反映出来 ...
- Python PyQt5中弹出子窗口,解决子窗口一闪而过
方式一:槽函数中创建子窗口对象,赋值到普通变量 在主窗口添加按钮,并把按钮信号关联槽,在槽函数中创建子窗口对象赋值到普通变量,并调用其 show 方法. from PyQt5.QtWidgets im ...
最新文章
- 阿里1688实时数据工程实践
- hdu3460 字典树(打印机)
- 2021CCPC网络赛部分题解
- UI历练素材|成功,少不了的临摹进阶
- Office2010安装出现“错误1907”的解决方法(未验证)
- Apache部署多个WordPress网站
- mysql linux内核_mysql 5.7.15 vs mysql 5.6.31性能测试以及不同linux内核性能比较
- AC9560网卡linux驱动安装
- C语言数据结构——用链表实现一个简单的电话号码簿
- Java二维码生成代码
- 在Fedora 28上安装LimeSurvey CE
- 程序员面试智力题总结
- 微信分享和微信H5跳转到APP开放标签wx-open-launch-app使用及样式设置
- Qt编写自定义控件:彩色渐变圆角按钮之二
- 【润乾报表2018】如何为参数报表增加重置功能
- PCB应力应变测试分析结合IPC-9702和IPC-9704A标准
- JavaScript设计模式学习(四)单件(Singleton Pattern)
- isBlank与isEmpty的区别
- 宗镜录略讲——南怀瑾老师——系列1
- 开心网开启 网络营销新时代