winform子窗体关闭,父窗体刷新数据?

sunchangyuan 2010-03-18 09:12:43
在winform中,我创建了一个有datagridview的窗体(姑且就叫主窗体吧)用于显示数据,再ShowDialog了一个用于添加数据的子窗体。如何在子窗体关闭后,父窗体的datagridview再次调用刷新方法刷新数据?
...全文
2227 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky42700 2011-11-01
  • 打赏
  • 举报
回复
越看越糊涂。
nali29 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sunchangyuan 的回复:]

我显示数据的方法就是绑定datagridview的DataSource,我想在子窗体的closed事件调用刷新方法不知道是否行得通?
[/Quote]

简单解
andyleec 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 andyleec 的回复:]

建一个接口 比如 iMainForm
接口内声明个方法 比如 Refresh()
主窗体 实现这个接口
主窗体打开子窗体时这样写
子窗体.Owner = this;
子窗体.ShowDialog();
---------------------------------
子窗体内你想啥时候刷新都行
(this.Owner as iMainForm).Refresh();
----……
[/Quote]

楼主,如果你在多处都用到子窗体和父窗体互动,强烈推荐我这个思路,通用,而且体现出了面向对象思想,代码美观
diegoyu 2010-03-18
  • 打赏
  • 举报
回复
建议LZ写个刷新数据的方法,重新绑定数据源
xuzysun 2010-03-18
  • 打赏
  • 举报
回复
通过子窗口的DialogResult来判定,是否需要重新绑定datagridview的DataSource
南哥1207 2010-03-18
  • 打赏
  • 举报
回复
楼上都是答案,不说了
nangangshi 2010-03-18
  • 打赏
  • 举报
回复
用ShowDialog
cecilia2006 2010-03-18
  • 打赏
  • 举报
回复
1 用DialogResult 返回 父窗体处理
2 写个事件 closing时触发父窗体数据刷新
mjay0210 2010-03-18
  • 打赏
  • 举报
回复
如果 你的子窗体 是 ShowDialog()的 直接在其下面写就成了

如果不是 就将其引用编程类引用。然后在一个timer 里监控其状态,如果是Close
就重新绑定

还有第三种方法

FormSon f.Show(this);

在子窗体的关闭函数里这样写:
FormFather ff=f.Owner as Form;
if(ff!=null)
有了这个FF 所有公有成员你想干啥 干啥
sunchangyuan 2010-03-18
  • 打赏
  • 举报
回复
添加成功
this.DialogResult = DialogResult.OK;
会刷新。
但是
修改成功
this.DialogResult = DialogResult.OK;
却不会刷新了!
测试菜鸟 2010-03-18
  • 打赏
  • 举报
回复
Mark 学习
sunchangyuan 2010-03-18
  • 打赏
  • 举报
回复
我用dialogresult方法可以,但是直接添加的数据保存成功后会刷新,但是修改后再保存却不会刷新!不知为甚?
ronaltn 2010-03-18
  • 打赏
  • 举报
回复
Paint事件
Urselect 2010-03-18
  • 打赏
  • 举报
回复
其实你可以在主窗体上直接拖放一个刷新的控件。然后再一次的datagridview的DataSource

当然这样也行的
if(form.ShowDialog()==DialogResult.Ok)
{
//绑定DataGridView代码
}
andyleec 2010-03-18
  • 打赏
  • 举报
回复
建一个接口 比如 iMainForm
接口内声明个方法 比如 Refresh()
主窗体 实现这个接口
主窗体打开子窗体时这样写
子窗体.Owner = this;
子窗体.ShowDialog();
---------------------------------
子窗体内你想啥时候刷新都行
(this.Owner as iMainForm).Refresh();
---------------------------------
以上方法非常泛用
zw880322 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sunchangyuan 的回复:]
我显示数据的方法就是绑定datagridview的DataSource,我想在子窗体的closed事件调用刷新方法不知道是否行得通?
[/Quote]
这个是可以的。
不过先得在你的父窗体有一个public方法来重载datasource,然后用字窗体的this.Parent.方法名()
leafsoar 2010-03-18
  • 打赏
  • 举报
回复
在构造子窗体的时候给子窗体传一个本窗体的引用,这样子窗体就随便怎么操作父窗体了
showlie 2010-03-18
  • 打赏
  • 举报
回复
in MainForm:
if(form1.ShowDialog()==DialogResult.OK)
{
重新绑定DataGridView;
}

in Form1:
在新增按钮添加完数据后,设置窗体的DialogResult为OK
zhxingway 2010-03-18
  • 打赏
  • 举报
回复
当然窗体间传值和更改控件的方法有好多,
楼主可参考http://blog.csdn.net/deanlee1982/archive/2007/08/07/1729548.aspx
zhxingway 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 foxdave 的回复:]
引用 3 楼 sunchangyuan 的回复:
我显示数据的方法就是绑定datagridview的DataSource,我想在子窗体的closed事件调用刷新方法不知道是否行得通?

用DialogResult吧 你那种想法需要把父窗体作为对象传进去
或者写委托吧
[/Quote]

主窗体:

if(form.ShowDialog()==DialogResult.Ok)
{
//绑定DataGridView代码
}


或者在主窗体建一个Public static的方法用于更新DataGridView的数据,然后在子窗体关闭时通过调用Form1.BindDataGridView这个方法来更新数据,


加载更多回复(12)

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧