在VS2008C#中,如何实现窗体间数据传递?

有一个frmMain窗体,其中有一个dataGridView控件,名字叫dgvShow,用来显示后台数据库表table中的数据。另外还有个添加按钮,点击时弹出窗体frmAdd。当frmAdd中的数据保存成功后自动关闭,这时我希望frmMain中dgvShow中自动更新,如何实现呢?
---有个思路,想把自动刷新写成个方法,在frmAdd 关闭时调用,可是不知道方法怎么写,以及写在哪,也不自动这个思路对不对。。。虚心向各位大虾请教!如果实现了,另有追赏!

可以有两种方式实现
1.用模式对话框,frmMain中用frmAdd.ShowDialog();这样frmMain就在等待状态了,frmAdd关闭后才能往下执行,然后你再帮顶一下数据表
2.在frmMain中定义一个public的函数,比如public reload(),然后用frmAdd.ShowDialog(this);或者frmAdd.Show(this);接着在frmAdd关闭前调用((frmMain)this.Owner).reload();就可以调用frmMain中的方法了,方法里重新帮顶一下数据表就ok了
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-12-08
可以用委托来实现
把你主窗口绑定数据的方法绑定在委托上
当打开第2个窗体时 注册委托
在第二个窗体更新时,执行委托上绑定的方法(也就是执行主窗口绑定方法)
就可以了 我也遇到过相同的问题 就是这样解决的
上网去看一下委托的资料
http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx
这兄弟写的就挺好
第2个回答  2009-12-08
传参过去,
父:FormParent
子:FormChild

在子的构造函数里加入父的引用
private FormParent frmParent = new FormParent();
构造时,获取该引用
public FormChild(FormParent parent)
{
this.frmParent = parent;
//因为是引用,所以可以直接处理该对象,如果在父对象上的控件,变量置PUBLIC后,还可以处理父窗体的各控件
}
在父里初始化子时,
FormChild frmChild =new FormChild(this);
相似回答