如何制作N标签?

时间:2017-09-14 13:29:49

标签: c#

这不起作用:

static int N = word.Length;
int z = 0;
for (int k = 0; k <N; k++)
{
    Label l = new Label();
    l.Name = string.Format("charLabel{0}", k);
    l.Text = "_";
    l.Height = 75;
    l.Width = 25;
    l.Location = new Point(300 + z, 10);
    this.Controls.Add(l);
    z += 10;
}

它只创建一个,我想在最后一个旁边创建更多Label s。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

如果您在行z += 10;中设置的数字大于10,则会看到结果,因为它需要更多空间来显示您的内容。但如果你设置如下AutoSize属性,你也会得到你想要的结果:

l.AutoSize = true;

通过设置此属性,控件会自动调整大小以显示其全部内容。

另外值得一提的是,默认情况下,当使用设计器添加到表单时,此属性为true,但在从代码实例化时则不行。基于MSDN

  

使用设计器添加到表单时,默认值为true。从代码实例化时,默认值为false。

答案 1 :(得分:0)

由于您只为标签的文字属性指定了一个字符,并且未更改标签的垂直边距,因此标签会叠加。

你应该改变这样的代码:

static int N = word.Length;
int z = 0;
for (int k = 0; k <N; k++)
{
    Label l = new Label();
    l.Name = string.Format("charLabel{0}", k);
    l.Text = "_";
    l.Height = 75;
    l.Width = 25;
    l.Location = new Point(300, 10 + z);
    this.Controls.Add(l);
    z += 50;
}