gpt4 book ai didi

c# - 集合被修改枚举操作可能无法执行

转载 作者:行者123 更新时间:2023-11-30 19:41:41 24 4
gpt4 key购买 nike

好的,所以我想打开一个新表单(如果它尚未打开)。所以我根据表格的标题或文本检查表格。现在,到目前为止它可以工作,因为在表单打开时,如果它已经打开,它只是将它带到前面。但我的问题是,如果它没有打开,并且我尝试创建它的一个新实例,它会抛出“集合已修改;枚举操作可能无法执行”。我一辈子也弄不明白为什么。感谢您的帮助。

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,而是使用 for 循环:

for (int i = 0; i < Application.OpenForms.Count; i++ )
{
Form f = Application.OpenForms[i];
if (f.Text != ChatReader["Sender"].ToString())
{

//...
chat.Show();
chat.BringToFront();
}
// ...
}

您不能在枚举期间更改 foreach 的基础集合。但是,如果您创建一个新表单并将其显示在那里,就会发生这种情况。您将另一个表格添加到开放集合中。

关于c# - 集合被修改枚举操作可能无法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19083507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com