C# 修改了Winform集合;枚举操作不能执行
我的代码是:C# 修改了Winform集合;枚举操作不能执行,c#,C#,我的代码是: private void studentToolStripMenuItem_Click(object sender, EventArgs e) { foreach (Form frm in Application.OpenForms) { if (frm.Text == "student") { frm.Activate(); }
private void studentToolStripMenuItem_Click(object sender, EventArgs e)
{
foreach (Form frm in Application.OpenForms)
{
if (frm.Text == "student")
{
frm.Activate();
}
else
{
studetn obj = new studetn();
obj.MdiParent = this;
obj.Dock = DockStyle.Fill;
obj.Show();
}
}
}
Show()命令修改正在枚举的Application.OpenForms集合。这是不允许的。您应该在foreach循环之外创建并显示新表单:
private void studentToolStripMenuItem_Click(object sender, EventArgs e)
{
// Find the student form
Form frmStudent = null;
foreach (Form frm in Application.OpenForms)
{
if (frm.Text == "student")
{
frmStudent = frm;
break;
}
}
// if found - activate, if not found - create
if(frmStudent!=null)
{
frmStudent.Activate();
}
else
{
studetn obj = new studetn();
obj.MdiParent = this;
obj.Dock = DockStyle.Fill;
obj.Show();
}
}
您是否尝试在循环中获取表单列表并在循环外激活它们?在决定创建新表单之前,您必须查看所有表单。所以这个代码已经被设计破坏了。添加
return
,将表单创建代码移到循环之外。并使用MdiChildren属性。这里的场景是更改我正在尝试检查mdi子项是否已打开如果已打开则激活它谢谢所有人最后我解决了它