我的问题是:
那些标签是通过for循环创建的,我认为你得到了我的问题, 奇怪的重叠。
代码:
for (int i = 0; i < maxlabels ; i++)
{
Label x = new Label();
x.Name = string.Format("label{0}", i);
x.Top = 2 + (15 * i); // <---- changed this line
x.Left = 3;
x.Text = x.Name;
x.BringToFront();
x.BackColor = Color.Transparent;
panel1.Controls.Add(x);
}
在上面的代码中,当改变了
x.Top = 2 + (30 * i);
到
(15 * i);
我得到了结果:
答案 0 :(得分:2)
我建议你使用FlowLayoutPanel。并将方向设置为自上而下(您也可以在属性UI中执行此操作):
yourFlowLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
您不需要在此面板中设置顶部,左侧等: e.g。
for (int i = 0; i < maxlabels ; i++)
{
Label x = new Label();
x.Name = string.Format("label{0}", i);
x.Text = x.Name;
x.BackColor = Color.Transparent;
yourFlowLayoutPanel.Controls.Add(x);
}
答案 1 :(得分:1)
由于您未在标签上明确设置高度,因此将使用默认值。
您可以通过设置x.AutoSize = true;
并使用乘数
for (int i = 0; i < maxlabels ; i++)
{
Label x = new Label();
x.Name = string.Format("label{0}", i);
x.AutoSize = true;`
x.Top = 2 + (x.Height * i);
x.Left = 3;
x.Text = x.Name;
x.BringToFront();
x.BackColor = Color.Transparent;
panel1.Controls.Add(x);
}