我有一个包含大约30个控件的表单,当用户单击按钮时,每个控件的数据都会保存到文件中。但我需要遍历表单上的每一个控件(我可以做),但它需要按顺序排列,例如,我需要从表单的左上角开始,然后向下工作到底部形式的权利。
这是一个foreach循环如何工作?即:
foreach(Control control in this.Controls)
{
}
或者它是不是按顺序通过它们?
答案 0 :(得分:4)
这将按照它们添加到表单的顺序返回控件,而不是按视觉顺序。
如果您按照要解析控件的顺序设置了TabIndex
,则可以使用LINQ按TabIndex
对它们进行排序。
foreach (Control control in this.Controls.Cast<Control>().OrderBy(c => c.TabIndex))
{
}
答案 1 :(得分:2)
您是否还需要枚举控件的子控件?
如果没有,请尝试
foreach(Control control in this.Controls.Cast<Control>().OrderBy(o => o.Location.Y).ThenBy(o => o.Location.X)
{
...
}
这将枚举控件,从左上角开始向右移动,然后向下。