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

2024-12-04 09:08:29
推荐回答(3个)
回答(1):

可以有两种方式实现
1.用模式对话框,frmMain中用frmAdd.ShowDialog();这样frmMain就在等待状态了,frmAdd关闭后才能往下执行,然后你再帮顶一下数据表
2.在frmMain中定义一个public的函数,比如public reload(),然后用frmAdd.ShowDialog(this);或者frmAdd.Show(this);接着在frmAdd关闭前调用((frmMain)this.Owner).reload();就可以调用frmMain中的方法了,方法里重新帮顶一下数据表就ok了

回答(2):

可以用委托来实现
把你主窗口绑定数据的方法绑定在委托上
当打开第2个窗体时 注册委托
在第二个窗体更新时,执行委托上绑定的方法(也就是执行主窗口绑定方法)
就可以了 我也遇到过相同的问题 就是这样解决的
上网去看一下委托的资料
http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx
这兄弟写的就挺好

回答(3):

传参过去,
父:FormParent
子:FormChild

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