ShowDialog方法运用错误问题,导致传递Owner窗体为空(null)。

1,现场描述:

我的主界面是MdiContainer的(FA),
单击一个菜单打开一个showdialog窗体(FB):FB.ShowDialog();
FB运行后将打开另外一个新窗体(FC)并关闭FB,
要求FC运行后是FA的子窗体。

于是我必须通过FB把FA传给FC:FC.MdiParent = FB.ParentForm;
但FB.ParentForm总为null,后来发觉还有个属性Owner,
于是FC.MdiParent = FB.Owner; 跟踪程序仍然为空,郁闷~~~~
难道真没办法解决吗?但是SQL Server 2000 的查询分析器不是做到了吗~~!!

2,转折点:

最后才知道是我的ShowDialog方法用错了!
其实ShowDialog 还有另外一个重载方法!!

Form.ShowDialog 方法 (IWin32Window)

将窗体显示为具有指定所有者的模式对话框。
参数   owner
任何实现
IWin32Window(表示将拥有模式对话框的顶级窗口)的对象。

3,结果:

改写代码为 :FB.ShowDialog(FA);
FC.MdiParent = FB.Owner;
终于运行成功,B界面关闭后,C界面成功成为A的子界面。

posted on 2006-10-16 14:57  Clark Chan  阅读(803)  评论(0编辑  收藏  举报

导航