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变化),加上比较简单,相对来说对精度转换导致的误差的修正还是比较容易的(修改描画函数,不要让误差不断滚雪球越来越大)。