控制器包裹在面板中

我有一个按钮面板。 我的按钮是动态创建的。 我想要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);
            }
        }

预期结果:

x x x x
X x x x 
x x x x

这是特雷布答案评论的答案。
使用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);
        }
    }

您只需通过调整Left属性(水平方向)将按钮向右移动即可:

button.Left = lastButton.Right + 1;

如果您想将它们向下移动,则需要调整垂直位置:

button.Top = lastButton.Bottom + 1;

既然这样你就不改变水平位置,新的按钮应该直接出现在最后一个的下面。

编辑:在回答你的评论时,你想要哪个结果? 它是A)

X X X X

或B)

X
X  
X  
X  

或者是C)

X
 X  
  X  
   X  

或者用线条按钮,你的意思是像D)

X | X | X | X

或E)

X - X - X - X
链接地址: http://www.djcxy.com/p/10563.html

上一篇: Controller wrapping in panel

下一篇: How to automatically classify images by dominant color?