1

我的问题是这样的:

图片

这些标签是通过 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);

我得到了结果:

图片

4

2 回答 2

2

我建议你使用 FlowLayoutPanel。并将方向设置为自上而下(您也可以在属性 UI 中这样做):

 yourFlowLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;

您无需在此面板中设置顶部、左侧等:例如

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);                
}
于 2013-06-14T09:57:22.240 回答
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);                
}
于 2013-06-14T09:57:31.580 回答