C#遍历容器存储顺序

foreach (Control c in mForm.Controls)
{

}

存储的顺序是依据mForm上添加控件的顺序,

            m1.Parent = myPanel;

            m3.Parent = myPanel;

            m4.Parent = myPanel;

            m2.Parent = myPanel;

那么存储的顺序就是1 3 4 2

如果要存储界面上多个容器,可以进行递归

但是如果

            m1.Parent = myPanel;

            m3.Parent = myPanel;

            m4.Parent = myPanel;

            m2.Parent = myPanel;

     m2.BringToFront();

由于m2调用函数bringtofront,顺序将变成1234。。。。。。真是郁闷

为什么我需要解决这个问题:

  因为我是在窗体初始化的时候存贮容器中所有的控件的信息,然后用来变化(缩放)。但是存贮之后我还要继续向容器添加控件,我想把这些新的控件转化回去,添加到初始化的List中。此时就要根据新加的控件是bringtofront了还是没有,决定是add到list末尾还是insert到合适的位置。

4.23.22:06更新

  我已经找到了更好地办法,无论缩放后增删,直接将存储初始值的控件list除了list[0]---存储的容器大小,其余的重新计算重新存贮。虽然这样可能会导致因为多次增删,float和int不断转换出现误差,但是由于缩放过程并不会受影响(一直根据初始list变化),加上比较简单,相对来说对精度转换导致的误差的修正还是比较容易的(修改描画函数,不要让误差不断滚雪球越来越大)。

原文地址:https://www.cnblogs.com/littlemasterDa/p/6753953.html