c# - C# 如何在 Foreach 循环中遍历表单控件

标签 c# winforms foreach

如标题所示,我的问题是 C# 如何在 foreach 循环中遍历表单控件?如果这有点太模糊,我会添加更多细节:

当我执行 foreach(Control c in MyForm) 时,它如何通过控件进行索引(?)?它是基于选项卡顺序还是其他?任何帮助将不胜感激,因为我正在尝试找出是否可以以更整洁、更有条理的方式将值放入数组中。

最佳答案

foreach 始终以相同的方式工作,因此在表单的控件上执行此操作不会改变任何内容。

它也没有真正使用索引; foreach 仅适用于实现 IEnumerable 的类的实例,这意味着它们具有 GetEnumerator 方法。 foreach 使用返回的 IEnumerator 一次一个地遍历集合;顺序取决于实际实现。

对于 List(或任何数组),这是按顺序排列的(即索引 0 在第一个,1 第二个,依此类推);对于 IEnumerable 的随机实现,您必须查看源代码。在您的特定示例中,查看 Form 上的 Controls 集合的类型。它是一个 ControlCollection,因此您需要查看 Reference Source找出它是如何枚举的。

基于implementation它似乎符合某些防止在枚举期间删除控件的保护措施。

关于c# - C# 如何在 Foreach 循环中遍历表单控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620107/

相关文章:

php - 我需要帮助使用 PHP 从 MySQL 数据库生成分组和表格报告吗?

c# - ASP.NET MVC 自定义多字段验证

具有相同宽度字符的 C# .NET 多行文本框

c# - 删除 XML 中的流氓符号的最佳方法是什么?

c# - Windows 窗体转换 Button 类

c# - 具有自动代理登录的 WebBrowser 控件

javascript - JavaScript 的问题

tomcat - JSTL错误javax/servlet/jsp/jSTL/core/LoopTag使用c时出错 :forEach tomcat ver7. 0

c# - MDI 子窗体似乎让父窗体的控件显示为透明

c# - Rx 中的 Run 和 Do 有什么区别?