【发布时间】:2014-09-20 14:57:35
【问题描述】:
我正在尝试在我的 winforms 应用程序上放置一个标签网格。首先,我填充大小为 (200 x 50) 的标签对象列表,然后尝试放置它们,以便当 x 达到表单的宽度 (581) 时,我将 y 增加 50 + 1
这是我的代码:
private List<Label> _labels;
private int xOffset = 10;
private int yOffset = 10;
public Form1()
{
InitializeComponent();
_labels = new List<Label>();
for(var i = 0; i <= 20; i++)
_labels.Add(new Label() { Name = "lbl" + i, Height = 50, Width = 200, MinimumSize = new Size(200, 50), BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D, Text = "Label "+i});
// 581, 517
var x = 0;
var y = 0;
foreach (var lbl in _labels)
{
if (x >= 580)
{
x = 0;
y = y + lbl.Height + 2;
lbl.Location = new Point(x, y);
}
this.Controls.Add(lbl);
x += x + lbl.Width;
}
}
它只是将列表中的偶数标签放在新行上。我不确定我做错了什么。
我正在尝试将所有标签放置在类似设计的网格中。当一行已满时,转到下一行并继续将列表中的标签放在新“行”上
【问题讨论】:
-
问题出在哪里?
-
对不起,我忘了添加那部分。请参阅我的编辑。我正在尝试将它们全部绘制在网格中的表单上(所以行和列)
-
为什么不使用 FlowLayoutPanel 并将方向设置为水平??
-
当你指的是地点时,请不要说绘制。
-
为什么不使用
TableLayoutPanel或FlowLayoutPanel?
标签: c# winforms label-control