在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;