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();
在以上几个方法中,个人认为第一个所有权法最好用,容易理解,而且代码简洁,推荐使用第一种方法。