winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体

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();

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

原文地址:https://www.cnblogs.com/weekzero/p/3471317.html