Foreach Loop of Controls in TableLayoutPanel (C# WinForms)



我有一个包含16个单元格的TableLayoutPanel,每个单元格中都有一个标签(代表时间(。

我正在尝试使用 foreach 循环将列表中的时间添加到所有标签中。

int i = 0;
foreach (Control ctrl in tableLayoutPanel1.Controls)
{
    if (ctrl is Label)
    {
        ctrl.Text = LessonsDAL.times[i];
    }
    i++;
}
尽管文本正在添加到标签

中,但循环似乎以随机顺序将文本添加到标签中。我想知道是否有面板的属性或标签可以控制它们在 foreach 循环中的访问顺序?这可能是一个简单的解决方案,但我就是找不到它!

非常感谢您的帮助!

为了速度和清晰度,修复你的 for 循环,因为每个循环在集合中都可能发生奇怪的情况,除非你先缓存它。

TableLayoutControlCollection[] controls = tableLayoutPanel1.Controls;
for (int i = 0; i < controls.Count; i++) {
    if (controls[i] is Label) {
        controls[i].Text = LessonsDAL.times[i];
    }
}

这确实取决于您在第一种情况下添加控件的方式,您可能想查看您的 win 表单代码并查看名称/ID,您还可以为每个控件提供一个标签,然后在 LessonsDAL.times 下有一个字典,该字典将采用标签名称并输出文本。

最新更新