关闭所有打开的表单,除了c#中的主菜单

关闭所有打开的表单,除了c#中的主菜单,第1张

概述尝试关闭主菜单以外的所有表单 FormCollection formsList = Application.OpenForms; 用foreach循环说, if (thisForm.Name != "Menu") thisForm.Close(); 哪个工作可以,它跳过菜单,并关闭第一个,但它然后错误: Collection was modified; enumeration operation 尝试关闭除主菜单以外的所有表单
FormCollection formsList = Application.OpenForms;

用foreach循环说,

if (thisForm.name != "Menu") thisForm.Close();

哪个工作可以,它跳过菜单,并关闭第一个,但它然后错误:

Collection was modifIEd; enumeration operation may not execute

并停止.我已经尝试了几个地方,他们都说这个foreach循环是这样做的,这是特别烦人的,因为我没有在关闭表单之后抛出我的表单,我认为可能会工作.我唯一可以想到的是从后面开始,使用一段时间前进.

任何帮助非常感谢,紧急,尽管截止日期是16:55 GMT今天!

干杯
瑞安

解决方法 如果您使用foreach通过集合枚举,则无法在迭代期间修改(添加或删除项目).尝试将表单的引用复制到另一个集合,然后通过遍历该集合来删除它们.

在这种情况下,您可以使用列表或简单数组,例如:

List<Form> openForms = new List<Form>();foreach (Form f in Application.OpenForms)    openForms.Add(f);foreach (Form f in openForms){    if (f.name != "Menu")        f.Close();}

或者你可以使用for循环:

for (int i = Application.OpenForms.Count - 1; i >= 0; i--){    if (Application.OpenForms[i].name != "Menu")        Application.OpenForms[i].Close();}

或者,我的新的和当前最喜欢的,你可以使用Reverse()方法:

foreach (Form f in Application.OpenForms.Reverse()){    if (f.name != "Menu")        f.Close();}
总结

以上是内存溢出为你收集整理的关闭所有打开的表单,除了c#中的主菜单全部内容,希望文章能够帮你解决关闭所有打开的表单,除了c#中的主菜单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1131403.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存