2011-07-25 154 views
1

我有铸造问题与MdiChildren问题与铸造MdiChildren

这工作:

MyForm mf = (MyForm)this.ActiveMdiChild; 

这不起作用:

MyForm[] mfs = (MyForm[])this.MdiChildren; 

在父窗体的所有形式的MyForm情况,但我不能成功地扮演他们。这意味着我不能使用MyForm提供的任何方法,因为它们只是Form对象。我能做些什么来纠正这个问题?

+0

为什么你需要从MdiChildren一个单独的集合(阵列)?为什么不迭代该集合并根据需要单独进行投射? –

回答

2

MdiChildren属性返回Form实例的数组,这是不一样的东西(和不能直接转换为)MyForm实例的数组。

您可以使用LINQ的Cast()方法进行显式转换:

MyForm[] mfs = this.MdiChildren.Cast<MyForm>().ToArray(); 
+0

谢谢你这个作品太棒了! – Satanfx55

1

下面是你如何做到这一点;

IEnumerable<MyForm> mfs = this.MdiChildren.Cast<MyForm>();