C# winform中窗口父子关系

C# winform中
MainForm mainform在相应按钮事件时
调用另外一个窗口Childform
调用函数是这样的:ChildForm child=new ChildForm();
child.ShowDialog();
然后想在childForm这个窗体相应一个按钮后 向mainform传值、因此需要调用
MainForm form=this.Owner();
这样this.owner()应该是获取父窗口的引用,但是为什么在调试时 会出现得到的引用时空呢,在主窗口MainForm调用时,没有确定这两个窗口的父子关系吗?需要怎么确定呢?谢谢~急

设置Form的Owner指的是当前窗口会作为设置窗口的子窗口,他的行为和记事本的查找替换窗口类似,不会模态的阻挡访问主窗口,并且主窗口的状态会影响子窗口,(最小化时子窗口也最小化等)

这个要显示设置你才能获取

窗体没有显式的父子关系,除非是Mdi窗体,如果是Mdi子窗体可以从MdiParent获取Mdi父窗体

一般这种对话框形式的Form设计都不直接返回值到主窗体,而是暴露一个属性,让主窗体或者任何程序可以随时访问,不知道你用过OpenFileDialog或者ColorDialog没,他们只是暴露了FileName和Color这种属性,他并不显式的访问主窗体,这样可以降低依赖性,你也可以尝试一下
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-11
在新建ChildForm 时候,指定其父窗口
ChildForm child=new ChildForm();
child.Parent=this;
child.ShowDialog();

然后在子窗体中利用利用强制转换就可以了。
MianForm form = (MianForm)this.Parent;
该form 就是你想要的MainForm 的原始实例了。本回答被提问者采纳
第2个回答  2010-08-11
Form1 frm1 = (Form1)this.Owner;
this.textBox2.Text = frm1.TextBox1Text;
这样改哈
第3个回答  2010-08-11
ChildForm child=new ChildForm()
改成
ChildForm child=new ChildForm(this)
应该就行了