[转]winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体
(转载请删除括号里的内容)
winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体,搜集了几个方法,列举如下:
一 、 所有权法
父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始化方法。如:
1
2
3
4
|
public void reLoad_method()
{ //窗体数据初始化方法,fuForm_Load中的全部操作,调用此方法可实现数据的刷新
} |
fuForm中打开ziForm时需要设置所有者,就是ziForm的所有者是fuForm,代码如下:
1
2
3
|
ziForm _ziForm = new ziForm ();
_ziForm.Owner = this ;
_ziForm.ShowDialog(); |
ziForm关闭或者需要刷新fuForm时,代码如下:
1
2
3
|
fuForm _fuForm ; _fuForm = (fuForm ) this .Owner;
_fuForm.reLoad_method(); |
二、自身传递法
在父窗体中有个公共刷新方法,如:
1
2
3
4
|
public void reLoad_method()
{ //窗体数据初始化方法,fuForm_Load中的全部操作,调用此方法可实现数据的刷新
} |
父窗体打开子窗体方法代码:
1
2
|
ziForm _ziForm = new ziForm() ;
_ziForm.ShowDialog( this ) ;
|
子窗体中:
1
2
3
4
5
6
7
8
|
private fuForm _fuForm;
public ziForm(fuForm fromfuForm)
{ InitializeComponent(); _fuForm = fromfuForm; } //刷新时 _fuForm.reLoad_method(); |
三、属性法
在父窗体中有个公共刷新方法,如:
1
2
3
4
|
public void reLoad_method()
{ //窗体数据初始化方法,fuForm_Load中的全部操作,调用此方法可实现数据的刷新
} |
父窗体打开子窗体方法代码
1
2
3
|
ziForm _ziForm = new ziForm() ;
_ziForm.fuFormX = this ;
_ziForm.Show() ; |
子窗体中:
1
2
3
4
5
6
7
8
|
private fuForm fuFormXy;
public fuForm fuFormX
{ get { return fuFormXy;}
set {fuFormXy = value;}
} //刷新时 fuFormXy.reLoad_method() ; |
四、委托法
在父窗体中有个公共刷新方法,如:
1
2
3
4
|
public void reLoad_method()
{ //窗体数据初始化方法,fuForm_Load中的全部操作,调用此方法可实现数据的刷新
} |
父窗体打开子窗体方法代码
1
2
|
ziForm _ziForm = new ziForm();
_ziForm.ShowUpdate += new DisplayUpdate(reLoad_method);<br>_ziForm.Show();
|
子窗体中:
1
2
3
4
5
6
|
//声明一个委托 public delegate void DisplayUpdate();
//声明事件 public event DisplayUpdate ShowUpdate;
//刷新时,放在需要执行刷新的事件里 ShowUpdate(); |
在以上几个方法中,个人认为第一个所有权法最好用,容易理解,而且代码简洁,推荐使用第一种方法。
---------------------
作者:weekzero
来源:CNBLOGS
原文:https://www.cnblogs.com/weekzero/p/3471317.html