将TableLayoutPanel中的每个控件分配给2D数组

时间:2016-02-23 21:08:05

标签: c# multidimensional-array foreach controls tablelayoutpanel

我创建了一个包含100个广告位(10x10)的TableLayoutPanel。在每个单元格中,我创建了一个新的TableLayoutPanel。 然后我创建了一个数组TableLayoutPanel[,] tb = new TableLayoutPanel[10,10];

所以现在我想循环遍历main(10x10)TableLayoutPanel的每个单元格,并将每个单元格中的每个tablelayoutpanel分配给2D数组中的内存插槽。

我一直在头脑风暴和网上搜索,有点暗示这将涉及两个for循环和一个foreach循环,但我很困惑,到底是什么。

根据我的编码,我认为进行分配的最佳位置是在这段代码中:

                for (int i = 0; i < 10; i++)
                {
                    for (int j = 0; j < 10; j++)
                    {
                        mainTPL.Controls.Add(new TableLayoutPanel
                        {
                            Name = "tbl" + i + "-" + j,
                            CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset,
                            Size = new Size(70, 70),
                            RowCount = 2,
                            ColumnCount = 3,
                        }, i, j);
                      //Could I do the assignment right here?
                    }
                }

我没有针对每个循环,但是可以在双循环中进行赋值吗?如何指定新创建的TableLayoutPanel以在数组中分配它? 谢谢你们。

1 个答案:

答案 0 :(得分:0)

所以我找到了一种使用嵌套if语句的方法。我打赌还有其他方法可以做到这一点,但现在这对我有用。希望这有助于某人。

TableLayoutPanel[,] grid = new TableLayoutPanel[10, 10];
    int k=0,l=0;   
     foreach (TableLayoutPanel c in mainTPL.Controls)
                        {  
                            if(k<10 && l<10)
                            {
                                 grid[k, l] = c;
                                 if (l != 9)
                                     l++;
                                 else
                                 {
                                        l = 0;
                                        k++;
                                 }
                            }
                        }