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

C#中关闭子窗口而不释放子窗口对象的方法的更多相关文章

  1. C#关闭子窗口而不释放子窗口对象的问题解决

    在网上找来一些方式,感觉还都不错,下面给出方式: 在线扫描相机的调试过程中,需要开辟调试界面来进行位置的配置.调试结束后,一种常用的方式是将调试参数保存并在下次启动时加载.另一种简单方式是直接使用该参 ...

  2. springmvc中返回页面,只在iframe中跳转,而不是整个页面,解决方法。

    问题描述:在我写的主页面中用到了iframe,其中在iframe中有一个button点击提交,然后在Controller中返回页面的时候,是在iframe中打开的,而不是整个页面. 最开始我想用aja ...

  3. iOS category中的所谓属性 和 从xib初始化对象的方法 以及类扩展

    今天在编码时遇到以下代码 @interface UITextField (TCCustomFont) @property (nonatomic, copy) NSString* fontName; @ ...

  4. C# 关闭子窗体释放子窗体对象问题

    1 在主窗口中实例化子窗口 Form2 f2 = new Form2(); 2 通过按钮来显示子窗口 f2.Show(); 3 关闭子窗口而不释放子窗口对象的方法 protected override ...

  5. 更新记录后关闭子窗口并刷新父窗口的Javascript

    有时我们需要在新打开的窗口里面编辑信息,等编辑完了,需要将当前窗口关闭并且刷新父窗口,以使修改生效,本文就是介绍用 javascript 来实现"更新记录后关闭子窗口并刷新父窗口" ...

  6. JS实现关闭当前子窗口,刷新父窗口

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

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

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

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

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

  9. JS子父窗口互相操作取值赋值的方法介绍

    $("#父窗口元素ID",window.parent.document); 对应javascript版本为window.parent.document.getElementById ...

随机推荐

  1. 自兴人工智能 python特点了解

    计算机语言从语言执行分类来看,大概可分为编译型语言(如Java.c++)和解释型语言(如python.javascript) 1.编译型语言  java   c++ 编写源代码.java ---> ...

  2. C++面试基础概念之动态库篇

    编写DLL所学所思(1)——导出函数 编写DLL所学所思(2)——导出类 C++ DLL导出类 知识大全 C++类库开发详解

  3. 通过URL触发Jenkins构建

    用Jenkins做持续集成时,一般会使用webhooks触发构建,或者定时构建,这里记录用URL的方式触发Jenkins构建. Note: This assumes you're using Jenk ...

  4. Python爬虫3-parse编码与利用parse模拟post请求

    GitHub代码练习地址:①利用parse模拟post请求:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac04_pars ...

  5. 全栈开发工程师微信小程序-上(中)

    全栈开发工程师微信小程序-上(中) width: 750rpx; 750rpx代表与屏幕等宽,rpx的缩写responsive pixel,这个单位是可以根据屏幕大小进行自适应调整的像素单位. 小程序 ...

  6. 《http权威指南》读书笔记14

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  7. Go语言之Interface(二)

    使用指针接收器和值接收器实现接口 type Describer interface { Describe() } type Person struct { name string age int } ...

  8. 源码安装ELK-5.6.10版本

    目录: 一.介绍 二.安装JDK 三.安装Elasticsearch 四.安装Kibana 五.安装Nginx 六.安装Logstash 七.安装Logstash-forwarder 八.测试 系统环 ...

  9. IdentityServer Resource Owner Password

    Resource Owner Password 模式需要自己实现用户名密码的校验 新增ResourceOwnerPasswordValidator实现IResourceOwnerPasswordVal ...

  10. Java IO API记录

    文件路径: public static final String FILEPATH= File.separator+"Users"+ File.separator+"xu ...