1

我在面板中添加了几个表格。表格具有属性

form.TopLevel = false;
form.Parent = pnlMain;

现在我想遍历 pnlMain 中的所有表单并关闭所有表单。为此,我有以下代码:

private void CloseForms()
{
    foreach(Form form in pnlMain.Controls.OfType<Form>())
        form.Close();
}

我的问题是,并非所有表格都已关闭。

在一个有四个开放表格的例子中:我计算了开放表格,

int count = pnlMain.Controls.OfType<Form>().Count();

当我调用 CloseForms 时,只关闭了两个表单。另外两个在 CloseForms 的另一个呼叫中关闭。

如何只用一个电话关闭所有表格?

4

1 回答 1

5

迭代时不要修改集合。试试这个

foreach(Form form in pnlMain.Controls.OfType<Form>().ToArray())
于 2012-09-12T11:38:36.497 回答