清晰标签不影响尺寸

clear label without affecting size

我正在用 C# 开发刽子手游戏,我必须为生成的单词的每个字符动态创建多个标签。

这是我正在使用的代码:

int x = 0, y = 0;
for (int i = 0; i < game.word.Length; i++)
{
    char c = game.word[i];
    Label label = new Label();
    label.Text = c.ToString();
    label.Location = new System.Drawing.Point(x, y);
    label.AutoSize = true;
    label.BorderStyle = BorderStyle.FixedSingle;
    label.Dock = DockStyle.Fill;
    x += label.Width;
    flowLayoutPanel1.Controls.Add(label);
}

它是这样显示的:

但是我希望标签为空,所以我这样做了:

// label.Text = c.ToString();
label.Text = "";

它显示如下:

如何清除标签而不影响其大小?

根据 Loathing 的评论,我可以通过将 MinimumSize 设置为 PreferredSize 然后清除标签来解决这个问题,但前提是所有标签都已添加。

int x = 0, y = 0;
for (...)
{
...
}
foreach(Control control in flowLayoutPanel1.Controls)
{
    if(control is Label)
    {
        control.MinimumSize = control.PreferredSize;
        control.Text = "";
    }
}

在您的代码中,我看到您已将 AutoSize 属性 设置为 true,这使标签根据里面的文字。

将其设置为 false 并将高度和宽度更改为所需的大小。现在即使将文本更改为空白,标签的大小也不会改变。

  label.AutoSize = false;

但是,如果您在标签中分配了多个字符,它仍将保持设置的大小并且其他字符将被隐藏,除非标签的大小调整到足以使所有字符可见。

在确定标签内容不会超过标签长度的情况下,将AutoSize属性设为false