铸造MdiChildren的问题

时间:2011-07-25 15:38:43

标签: c# .net arrays forms casting

我遇到MdiChildren的投射问题。

这有效:

MyForm mf = (MyForm)this.ActiveMdiChild;

这不起作用:

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

父表单中的所有表单都是MyForm的实例,但我无法成功投出它们。这意味着我不能使用MyForm提供的任何方法,因为它们只是Form对象。我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

MdiChildren属性返回Form个实例的数组,这与MyForm个实例的数组不同(并且不能直接转换为)。

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

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

答案 1 :(得分:1)

以下是如何做到这一点;

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