C# 确定foreach中的顺序(pnl中的面板p)

C# 确定foreach中的顺序(pnl中的面板p),c#,foreach,panel,C#,Foreach,Panel,我有一个面板,叫做pnl,里面有更多的面板,叫做p。现在,用户可以为每个面板p选择一种颜色 然后我想确定panel pnl中每个panel p的颜色 我使用了一个类似于foreach的foreach循环(pnl中的Panel p)。但是,我需要知道每个面板从左到右的颜色,以便在int数组中对它们进行选通。foreach循环似乎总是以相同的顺序查看面板p,但是我想知道在哪里可以设置这个顺序 它叫什么名字?(我找不到一个方法来命名它们,这样它就起作用了)。还是别的什么?我怎样才能更改订单 我希望我的

我有一个面板,叫做pnl,里面有更多的面板,叫做p。现在,用户可以为每个面板p选择一种颜色

然后我想确定panel pnl中每个panel p的颜色

我使用了一个类似于foreach的foreach循环(pnl中的Panel p)。但是,我需要知道每个面板从左到右的颜色,以便在int数组中对它们进行选通。foreach循环似乎总是以相同的顺序查看面板p,但是我想知道在哪里可以设置这个顺序

它叫什么名字?(我找不到一个方法来命名它们,这样它就起作用了)。还是别的什么?我怎样才能更改订单

我希望我的问题是明确的,期待答案


非常感谢您

您必须尝试按从左到右的顺序列举:

foreach (Panel p in pnl.Controls.OfType<Panel>().OrderBy(x => x.Left)) {
  // do something with p
}
foreach(pnl.Controls.OfType()中的面板p.OrderBy(x=>x.Left)){
//用p做点什么
}

只需添加-您可以进一步使用
。选择(x=>x.Color)。ToArray()
正如OP提到的,他想将它们存储在一个int arr中。我知道您知道-只需为OP写一个注释(发布答案没有意义)。@NSGaga您可能是指
x=>x.BackColor
,因为面板没有这个名称的颜色属性。:-)你是对的-我完全没有想到这些:)只是一个伪代码-我已经很久没有真正使用它了。太棒了,很管用!谁能给我解释一下到底发生了什么?我不太理解msdn文章。@user1953145我不知道你在说哪篇文章,但代码只是枚举你的
pnl.Controls
集合中的所有面板,然后根据每个面板的
Left
属性值对它们重新排序。
x
变量表示它在集合中找到的每个面板。通过将控件动态添加到主面板的控件数组中,可以控制顺序(在根据需要添加排序之前)