好的,所以如果表单尚未打开,我希望打开一个新表单。因此,我根据表单的标题或文本检查表单是否存在。到目前为止,它可以工作,即表单会打开,如果它已经打开,它只是将其置于最前面。但我的问题是,如果它没有打开,并且我尝试创建一个新实例,它会抛出“集合已修改;可能无法执行枚举操作”的错误。我无论如何都想不出原因。感谢任何帮助。
foreach (DataRow iRow in chatcheck.Rows)
{
FormCollection fc = Application.OpenForms;
foreach (Form f in fc)
{
if (f.Text != ChatReader["Sender"].ToString())
{
ChatBox chat = new ChatBox();
Connection.ConnectionStrings.chatopen = ChatReader["Sender"].ToString();
chat.Text = Connection.ConnectionStrings.chatopen;
chat.Show();
chat.BringToFront();
}
else if (f.Text == ChatReader["Sender"].ToString())
{
f.BringToFront();
}
}
}
foreach(Datarow row in sometable.rows)
循环中,所以它正在创建一个很棒的循环。但我需要那个Datarow循环来获取“发送者”信息。所以我不知道如何让它工作。 - Dr ArcheriRow
,所以我不知道你实际上想要实现什么。也许你需要另外提出一个问题,把foreach
和OpenForms
的问题排除在外。 - Tim Schmelterfor
循环:for (int i = Application.OpenForms.Count-1; i >= 0; i--)...
您还可以使用List.ForEach
,它基本上是一个反向for
循环的包装器,允许修改或甚至删除项目。 - Tim Schmelter