[转]winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体 - weekzero
(转载请删除括号里的内容)
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
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步