以编程方式将标签添加到Windows窗体(标签长度?)

时间:2012-07-18 22:07:36

标签: c# .net label windows-forms-designer

在我的代码中,我创建了一个带有以下内容的标签:

Label namelabel = new Label();
namelabel.Location = new Point(13, 13);
namelabel.Text = name;
this.Controls.Add(namelabel);

名为name的字符串在此之前定义,长度约为50个字符。但是,只有前15个显示在我的表单上的标签中。我试过搞乱标签的MaximumSize,但无济于事。

4 个答案:

答案 0 :(得分:9)

尝试添加AutoSize属性:

namelabel.AutoSize = true;

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

答案 1 :(得分:3)

尝试使用属性AutoSize = true;

MSDN refs

另一种方法是使用Graphics类的MeasureString方法

Graphics e =  nameLabel.CreateGraphics();
SizeF stringSize = new SizeF();
stringSize = e.MeasureString(name, namelabel.Font);
nameLabel.Width = (int)stringSize.Width;

答案 2 :(得分: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的文档可在此处找到:

答案 3 :(得分:0)

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