使用Linq关闭所有MDI子窗口

时间:2013-04-18 22:47:27

标签: c# winforms linq mdichild mdiparent

我正在尝试使用以下循环

foreach (Form frm in this.MdiChildren)
{
    frm.Close();
}

并将其转录为Linq表达式,如下所示:

this.MdiParent.MdiChildren.OfType<Form>().ToList().ForEach(x => x.Close());

但这行显示NullReferenceException“对象引用未设置为对象的实例”

我做错了什么?我是Linq的新手。

1 个答案:

答案 0 :(得分:4)

试试这个:

this.MdiChildren.OfType<Form>().ToList().ForEach(x => x.Close());

除非您尝试其中一个孩子的代码,否则您会尝试使用代码

this.MdiParent.MdiChildren.OfType<Form>().ToList().ForEach(x => x.Close());

它也应该有用。