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(); |
在以上几个方法中,个人认为第一个所有权法最好用,容易理解,而且代码简洁,推荐使用第一种方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现