控制器包裹在面板中
我有一个按钮面板。 我的按钮是动态创建的。 我想要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?