Как изменить размер этикетки по длине имени кнопки - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь создавать кнопки и метки динамически, создание - это хорошо, но изменение размера метки - проблема, я хочу масштабировать размер метки по длине имени кнопки, но изменение размера не работает, мой код и снимок экрана ниже, может пожалуйста, помогите мне?

for (int i = 0; i < 10; i++)
{


    Button btn = new Button();
    btn.Name = "btnAdi" + (i + 1).ToString();
    btn.Text = (i + 1).ToString();
    this.Controls.Add(btn);
    btn.Location = new Point(0, btn.Height * i);

    Label lbl = new Label()
    {
        TextAlign = ContentAlignment.MiddleLeft,
        Dock = DockStyle.None,
        BorderStyle = BorderStyle.FixedSingle,
    };
    lbl.Text = btn.Name.ToString();

    lbl.Size = new Size( (btn.Name.Length), btn.Height);
    this.Controls.Add(lbl);
    lbl.Location = new Point(btn.Width, (btn.Height * i));


}

screenshot of output

1 Ответ

2 голосов
/ 06 марта 2019

Вы просто должны изменить размер этикетки, примерно так:

EDIT:

После комментария @Malior с помощью автоматического изменения размера вы можете удалить строку "lbl.Size".

for (int i = 0; i < 10; i++)
{
    Button btn = new Button();
    btn.Name = "btnAdi" + (i + 1).ToString();
    btn.Text = (i + 1).ToString();
    this.Controls.Add(btn);
    btn.Location = new Point(0, btn.Height * i);

    Label lbl = new Label()
    {
        TextAlign = ContentAlignment.MiddleLeft,
        Dock = DockStyle.None,
        BorderStyle = BorderStyle.FixedSingle,
    };
    lbl.AutoSize = true;
    lbl.Text = btn.Name.ToString();

    this.Controls.Add(lbl);
    lbl.Location = new Point(btn.Width, (btn.Height * i));
}

Выход:

enter image description here

EDIT2:

Если вы хотите со свойством "lbl.Size", вам нужно что-то вроде этого, чтобы получить ширину lbl.Text:

Font arialBold = new Font("Arial", 10);
Size size = TextRenderer.MeasureText(lbl.Text, arialBold);
lbl.Size = new Size(size.Width, size.Height);

Я заметил, что метод дает на 1 или 2 пробела больше, чем предполагалось.

Выход2:

enter image description here

...