Программно добавление метки в 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;
другим способом является использование метода 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"
});