这不起作用:
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。我怎么能这样做?
答案 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;
}