在winform 項目時遇到: 集合已修改;可能無法執行枚舉操作的問題
錯誤原因:當用foreach遍歷Collection時,如果對Collection有Add或者Remove或其他類似操作都會有這個錯誤。
因為Collection返回的IEnumerator把當前的屬性暴露為只讀屬性,所以對其的修改會導致運行時錯誤;
正確代碼:
FormCollection collection = Application.OpenForms;
List<Form> frmList = new List<Form>();
for (int i = 0; i < collection.Count; i++)
{
if (collection[i].GetType() == typeof(FrmMainCharts))
{
frmList.Add(collection[i]);
}
}
//
for (int i = 0; i < frmList.Count; i++)
{
frmList[i].Close();
}
因為Form是引用類,所以可以很輕松Close;