"Collection was modified; enumeration operation may not execute." appears to be a common error with foreach
loops, but I can't figure mine out. I have two classes of forms. One is begun on startup, and a button creates new instances of the second form, and displays them. When I close the secondary forms, I get an InvalidOperationException
.
FirstForm.cs
public partial class FirstForm : Form
{
SecondForm frmSecond;
...
private void button1_Click(object sender, EventArgs e)
{
frmSecond= new SecondForm ();
frmSecond.Show();
}
}
SecondForm.designer.cs
partial class SecondForm
{
...
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing); // InvalidOperationException thrown here.
}
}
The problem was a PowerPacks.RectangleShape
object I had placed on my second form and forgot about (because it wouldn't render.) I deleted the object, and the form disposed just fine.
Testing this further, I found that any control which requires a PowerPacks.ShapeContainer
(LineShape
, OvalShape
, and RectangleShape
,) cause this problem, but other PowerPacks
objects don't.
I'm not sure why this happens, so if anyone figures out a workaround, I'd appreciate that. But for now I'll avoid PowerPacks
shapes.