Программно добавление метки в Windows Form (длина метки?)

в моем коде я создаю ярлык со следующим:

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

строка с именем name определена до этого и имеет длину около 50 символов. Однако в метке на моей форме отображаются только первые 15. Я попытался возиться с максимальным размером этикетки, но безрезультатно.

4 ответов


попробуйте добавить свойство AutoSize:

namelabel.AutoSize = true;

когда вы помещаете метку в форму с редактором дизайна, это свойство по умолчанию имеет значение true, но если вы создаете метку в коде, как вы это сделали, значение по умолчанию-false.


попробуйте свойство AutoSize = true;

MSDN refs

другим способом является использование метода MeasureString класса Graphics

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

вы можете использовать свойство 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 можно найти здесь:


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