在网上找来一些方式,感觉还都不错,下面给出方式:

在线扫描相机的调试过程中,需要开辟调试界面来进行位置的配置。调试结束后,一种常用的方式是将调试参数保存并在下次启动时加载。另一种简单方式是直接使用该参数运行程序。因此,在后一种情况下,需要实现的功能是:即使关闭调试窗口,其窗口对象也不释放。除非其主窗口关闭,才销毁其调试窗口的对象。

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#关闭子窗口而不释放子窗口对象的问题解决相关推荐

  1. qt如何把父窗口的变量传给子窗口_父窗口和iframe子窗口之间相互传递参数和调用函数或方法...

    1.父窗口向子窗口传递参数: 可以在url中添加参数:2.html?a=1&b=2&c=3 然后在子页面上可用js解析,提供一个函数: function getQueryStr(sAr ...

  2. JS实现关闭当前子窗口,刷新父窗口及调用父窗口的方法

    一.JS实现关闭当前子窗口,刷新父窗口 JS代码如下: <script>  function refreshParent() {   window.opener.location.href ...

  3. 2.6 子窗口赋值给父窗口并关闭子窗口 我的程序猿之路:第十六章

    <s:textfield id="innovationName" cssClass="txt validate[maxSize[50]]"title=&q ...

  4. windows窗口分析,父窗口,子窗口,所有者窗口

    (本文尝试通过一些简单的实验,来分析Windows的窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++.Windows编程及MFC经验,还得有一定动手能力.文中可能出现一些术语不统一的现象 ...

  5. window.open window.showModelDialog 打开一个新窗口/子窗口中调用父窗口的方法

    window.open 只打开一个窗口是将 oNewWindow   =   window   .   open   (   sURL   ,   sName   ,   sFeatures   , ...

  6. 在框架内用top.layer.open方式打开的子窗口中调用父窗口方法

    1.父窗口方法 function add() { //相关语句 } 2.父窗口打开子窗口 ,其他属性设置参考layer API top.layer.open({ id: "父窗口ID&quo ...

  7. [PYQT5] 主窗口弹出子窗口

    需求: 在PYQT5中,点击主窗口中的按钮,弹出子窗口. 测试代码: 例1: 在主窗口添加按钮,并把按钮信号关联槽,在槽函数中创建子窗口对象赋值到普通变量,并调用其 show 方法. from PyQ ...

  8. QT 在子窗口中调用主窗口的UI

    在QT中,我们时常会需要在主窗口里添加一些子窗口,比如添加一个新的对话框,或者在TabWidget中添加tab页面.通常添加子窗口后,如果在子窗口中做了一些操作,我们需要在主窗口中通过UI控件反映出来 ...

  9. Python PyQt5中弹出子窗口,解决子窗口一闪而过

    方式一:槽函数中创建子窗口对象,赋值到普通变量 在主窗口添加按钮,并把按钮信号关联槽,在槽函数中创建子窗口对象赋值到普通变量,并调用其 show 方法. from PyQt5.QtWidgets im ...

最新文章

  1. 阿里1688实时数据工程实践
  2. hdu3460 字典树(打印机)
  3. 2021CCPC网络赛部分题解
  4. UI历练素材|成功,少不了的临摹进阶
  5. Office2010安装出现“错误1907”的解决方法(未验证)
  6. Apache部署多个WordPress网站
  7. mysql linux内核_mysql 5.7.15 vs mysql 5.6.31性能测试以及不同linux内核性能比较
  8. AC9560网卡linux驱动安装
  9. C语言数据结构——用链表实现一个简单的电话号码簿
  10. Java二维码生成代码
  11. 在Fedora 28上安装LimeSurvey CE
  12. 程序员面试智力题总结
  13. 微信分享和微信H5跳转到APP开放标签wx-open-launch-app使用及样式设置
  14. Qt编写自定义控件:彩色渐变圆角按钮之二
  15. 【润乾报表2018】如何为参数报表增加重置功能
  16. PCB应力应变测试分析结合IPC-9702和IPC-9704A标准
  17. JavaScript设计模式学习(四)单件(Singleton Pattern)
  18. isBlank与isEmpty的区别
  19. 宗镜录略讲——南怀瑾老师——系列1
  20. 开心网开启 网络营销新时代

热门文章

  1. 7805引脚图及稳压电路图资料
  2. LCA问题的RMQ解法解析
  3. LeetCode —— 257. 二叉树的所有路径(Python)
  4. 计算机网络——访问网站数据传输过程
  5. 花书 —— 机器学习基础
  6. 【指数机制代码实现】差分隐私代码实现系列(十)
  7. 九九乘法表下半三角(C语言)
  8. excel 多次筛选后的range数据处理
  9. Java7并发编程指南——第六章:并发集合
  10. mpi如何选择合适的进程数量_洗涤工厂如何选择合适的洗衣龙