C# winform中窗口父子关系

[复制链接]
查看11 | 回复2 | 2010-8-11 12:48:21 | 显示全部楼层 |阅读模式
C# winform中
MainForm mainform在相应按钮事件时
调用另外一个窗口Childform
调用函数是这样的:ChildForm child=newChildForm();

child.ShowDialog();
然后想在childForm这个窗体相应一个按钮后 向mainform传值、因此需要调用

MainForm form=this.Owner();
这样this.owner()应该是获取父窗口的引用,但是为什么在调试时 会出现得到的引用时空呢,在主窗口MainForm调用时,没有确定这两个窗口的父子关系吗?需要怎么确定呢?谢谢~急

回复

使用道具 举报

千问 | 2010-8-11 12:48:21 | 显示全部楼层
设置Form的Owner指的是当前窗口会作为设置窗口的子窗口,他的行为和记事本的查找替换窗口类似,不会模态的阻挡访问主窗口,并且主窗口的状态会影响子窗口,(最小化时子窗口也最小化等)这个要显示设置你才能获取窗体没有显式的父子关系,除非是Mdi窗体,如果是Mdi子窗体可以从MdiParent获取Mdi父窗体一般这种对话框形式的Form设计都不直接返回值到主窗体,而是暴露一个属性,让主窗体或者任何程序可以随时访问,不知道你用过OpenFileDialog或者ColorDialog没,他们只是暴露了FileName和Color这种属性,他并不显式的访问主窗体,这样可以降低依赖性,你也可以尝试一下
回复

使用道具 举报

千问 | 2010-8-11 12:48:21 | 显示全部楼层
在新建ChildForm 时候,指定其父窗口ChildForm child=newChildForm();child.Parent=this; child.ShowDialog();然后在子窗体中利用利用强制转换就可以了。MianForm form = (MianForm)this.Parent;该form 就是你想要的Mai
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行