以编程方式向Windows窗体添加标签(标签的长度是多少?)

13
在我的代码中,我使用以下方式创建一个标签:
Label namelabel = new Label();
namelabel.Location = new Point(13, 13);
namelabel.Text = name;
this.Controls.Add(namelabel);

在此之前定义了名为 name 的字符串,它的长度约为50个字符。然而,在我的表单标签中只显示了前15个字符。我尝试更改标签的 MaximumSize 属性,但无效。


5
FYI:初始化器语法更简洁:Controls.Add(new Label { Location = new Point(13, 13), AutoSize = true, Text = name }); - Tergiver
4个回答

10
尝试添加AutoSize属性:
namelabel.AutoSize = true;

当您使用设计编辑器在表单上放置标签时,此属性默认为 true,但如果像您所做的那样在代码中创建标签,则默认值为 false。


3
尝试使用属性AutoSize = true; MSDN参考 另一种方法是使用Graphics类的MeasureString方法。
Graphics e =  nameLabel.CreateGraphics();
SizeF stringSize = new SizeF();
stringSize = e.MeasureString(name, namelabel.Font);
nameLabel.Width = (int)stringSize.Width;

1
您可以使用属性Label.AutoSize来自动调整标签的宽度,以适应存储在Label.Text中的所有内容。
值得一提的是,在使用设计编辑器创建标签时,此属性默认为true,但是当您自己编程创建标签时,该属性默认为false
namelabel.AutoSize = true;

当然,您也可以手动设置标签的宽度,使用以下内容来计算所需的宽度。

Graphics namelabel_g = namelabel.CreateGraphics ();

namelabel.Width = namelabel_g.MeasureString (
  namelabel.Text, namelabel.Font
);

关于使用 Label.AutoSize 的文档可以在 msdn 上找到:


关于 Graphics.MeasureString 的文档可以在这里找到:


0
panel_saved.Controls.Add(
    new Label 
    { 
        Location = new Point(1, 2), 
        Size = new System.Drawing.Size(43, 18), 
        BorderStyle = BorderStyle.FixedSingle, 
        Text = "yourdata" 
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接