如标题所示,我的问题是 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/