控制器包裹在面板中

Mus*_* E. 7 c#

我有一个带按钮的面板.我的按钮是动态创建的.我希望有4行,每行4个按钮.但我只得到一排.

 foreach (CategoriesDataSet.CategoriesRow category in DataRepository.Categories.Categories)
        {
            if (!category.CategoryName.Equals("ROOT"))
            {
                SimpleButton button = new SimpleButton();
                button.Text = category.CategoryName;
                button.Tag = category.CategoryId;
                button.Size = new Size(82, 70);


                if (lastButton != null)
                    button.Left = lastButton.Right + 1;


                lastButton = button;
                button.Click += CategoryButtonClick;
                categoriesPanel.Controls.Add(button);
            }
        }
Run Code Online (Sandbox Code Playgroud)

期望的结果:

x x x x
X x x x 
x x x x
Run Code Online (Sandbox Code Playgroud)

brg*_*ner 2

这是 Treb 答案后面的评论的答案。
使用for循环并对Left属性使用模运算符。

for (int i = 0; i < DataRepository.Categories.Categories.Count; i++)
{
    CategoriesDataSet.CategoriesRow category = DataRepository.Categories.Categories[i];

        if (!category.CategoryName.Equals("ROOT"))
        {
            SimpleButton button = new SimpleButton();
            button.Text = category.CategoryName;
            button.Tag = category.CategoryId;
            button.Size = new Size(82, 70);

            button.Left = i%4*82;
            button.Top = i*70;

            button.Click += CategoryButtonClick;
            categoriesPanel.Controls.Add(button);
        }
    }
Run Code Online (Sandbox Code Playgroud)