我有一个带按钮的面板。我的按钮是动态创建的。我希望有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
答案 0 :(得分:2)
这是Treb回答评论的答案 使用进行循环,并使用 modulo 运算符 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);
}
}
答案 1 :(得分:1)
您只需通过调整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