如何通过按钮名称长度调整标签大小

How to resize the label size by button name length

我正在尝试动态创建按钮和标签,创建很好但调整标签大小是个问题,我想按按钮名称长度缩放标签大小但调整大小不起作用,我的代码和输出屏幕截图如下, 你能帮帮我吗?

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));


}

你只需要自动调整标签大小,像这样:

编辑:

在@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));
}

输出:

编辑2:

如果你想要 属性 "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: