清晰标签不影响尺寸
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
我正在用 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