winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体,搜集了几个方法,列举如下:

一 、 所有权法

父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始化方法。如:

public void reLoad_method()
{
//窗体数据初始化方法,fuForm_Load中的全部操作,调用此方法可实现数据的刷新
}

fuForm中打开ziForm时需要设置所有者,就是ziForm的所有者是fuForm,代码如下:

ziForm _ziForm  = new ziForm ();
_ziForm.Owner = this;
_ziForm.ShowDialog();

ziForm关闭或者需要刷新fuForm时,代码如下:

fuForm _fuForm ;
_fuForm = (fuForm )this.Owner;
_fuForm.reLoad_method();

  

二、自身传递法

在父窗体中有个公共刷新方法,如:

public void reLoad_method()
{
//窗体数据初始化方法,fuForm_Load中的全部操作,调用此方法可实现数据的刷新
}  

父窗体打开子窗体方法代码:

ziForm _ziForm = new ziForm()   ;
_ziForm.ShowDialog(this) ;

子窗体中:

private   fuForm _fuForm;
public ziForm(fuForm fromfuForm)
{
InitializeComponent();
_fuForm = fromfuForm;
}
//刷新时
_fuForm.reLoad_method();

  

三、属性法

在父窗体中有个公共刷新方法,如:

public void reLoad_method()
{
//窗体数据初始化方法,fuForm_Load中的全部操作,调用此方法可实现数据的刷新
}  

父窗体打开子窗体方法代码

ziForm _ziForm =   new   ziForm()   ;
_ziForm.fuFormX = this;
_ziForm.Show() ;

子窗体中:

private fuForm fuFormXy;
public fuForm fuFormX
{
get{return fuFormXy;}
set{fuFormXy = value;}
}
//刷新时
fuFormXy.reLoad_method() ;

四、委托法

在父窗体中有个公共刷新方法,如:

public void reLoad_method()
{
//窗体数据初始化方法,fuForm_Load中的全部操作,调用此方法可实现数据的刷新
}  

父窗体打开子窗体方法代码

ziForm _ziForm = new ziForm();
_ziForm.ShowUpdate += new DisplayUpdate(reLoad_method);
_ziForm.Show();

子窗体中:

//声明一个委托
public delegate void DisplayUpdate();
//声明事件
public event DisplayUpdate ShowUpdate;
//刷新时,放在需要执行刷新的事件里
ShowUpdate();

在以上几个方法中,个人认为第一个所有权法最好用,容易理解,而且代码简洁,推荐使用第一种方法。

winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体的更多相关文章

  1. SpringMVC中redirect跳转后如何保存Model中的数据?

    @RequestMapping(value = "delete-user", method = RequestMethod.POST) public String deleteUs ...

  2. dev控件 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内

    前言 本文主要讲解 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内,顺便附上Float(浮动)的时候使窗体最大化,及指定只能某一个子窗体能浮动放大. 下面进入正题. 一.首 ...

  3. [译]GLUT教程 - 创建和关闭子窗体

    Lighthouse3d.com >> GLUT Tutorial >> Subwindows >> Creating and Destroying Subwind ...

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

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

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

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

  6. 12月8日phpcms添加子栏目后的读取

    一个栏目下面如果没有子栏目,那么它调用的模板就是列表页模板(及list_为前缀的模板):如果一个栏目下面有子栏目,那么它调用的就是栏目首页模板(category_为前缀的模板). 所以,当你这个栏目添 ...

  7. 关闭“编辑窗体”后, 主窗体的DatagridView刷新数据的问题

    问题:在关闭一个窗体2后,要刷新窗体1内的datagridview的数据,直接窗体1.datagridview.datasource=dt 是没用的. 解决办法如下: 在主窗体里 创建编辑窗体时 加上 ...

  8. phpcms添加子栏目后的读取

    一个栏目下面如果没有子栏目,那么它调用的模板就是列表页模板(及list_为前缀的模板):如果一个栏目下面有子栏目,那么它调用的就是栏目首页模板(category_为前缀的模板). 所以,当你这个栏目添 ...

  9. C# WebService中任务处理线程创建子线程后

    protected void WriteLog(string message) { lock (lockObject) { var file = System.IO.File.AppendText(& ...

随机推荐

  1. 黑马程序员——【Java高新技术】——案例:交通灯管理系统

    ---------- android培训.java培训.期待与您交流! ---------- 一.交通灯管理系统的项目需求 Ø 异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆 - ...

  2. js单击自动选择文本

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. VC

    原子锁 临界区 互斥量 信号量 事件

  4. secureCRT的一些小知识

    secureCRT 是一个非常不错的终端软件,在嵌入式开发过程中经常使用到,所以了解一下其快捷键操作是非常有必要的,可以提高开发效率. 0.在secureCRT里切换不同的窗口:ctrl+tab.   ...

  5. [转帖]网络协议封封封之Panabit配置文档

    原帖地址:http://myhat.blog.51cto.com/391263/322378

  6. (转)笔记320 SQLSERVER中的加密函数 2013-7-11

    1 --SQLSERVER中的加密函数 2013-7-11 2 ENCRYPTBYASYMKEY() --非对称密钥 3 ENCRYPTBYCERT() --证书加密 4 ENCRYPTBYKEY() ...

  7. C++学习笔记25:makefile文件2

    Makefile文件语法 行解析:命令按行解析 命令行的行首字符为Tab键,其他行的行首字符不得为Tab键,但可以使用多个空格缩进 换行:命令太长时,行尾使用"\"换行 注释:行首 ...

  8. win10 用cmake 3.5.2 和 vs 2015 update1 编译 GPU版本(cuda 8.0, cudnn v5 for cuda 8.0)

    win10 用cmake 3.5.2 和 vs 2015 update1 编译 GPU版本(cuda 8.0, cudnn v5 for cuda 8.0)  用vs 2015打开 编译Release ...

  9. gcc编译的四个阶段:预处理,编译,汇编,链接

    1:gcc编译的四个阶段:预处理,编译,汇编,链接 #vi file.c #gcc -E file.c -o file.i//-E查看且预处理后停止编译,-o生成目标文件,-i表示已预处理 #gcc  ...

  10. 用sql语句建表

    CREATE TABLE USER (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(30) NOT NULL, p ...