我在flowlayoutpanel上有很多按钮,然后有文本标签来打破流程。标签和标签本身之前的最后一个按钮为SetFlowBreak
。一切都很好,但我不明白,为什么文本标签下面有这么多空间?如果表单的大小调整得太窄以至于只有一列按钮,那么不需要的空间就会消失。有人可以解释如何删除这个空间吗?
代码:
public Form1()
{
InitializeComponent();
for (int i = 1; i <= 100; i++)
{
Button button = new Button();
button.Text = i.ToString();
button.Width = 150;
button.Height = 50;
button.Margin = new Padding(5);
flowLayoutPanel1.Controls.Add(button);
if (i % 10 == 0)
{
flowLayoutPanel1.SetFlowBreak(button, true);
Label label = new Label();
label.Text = "Some random text";
label.AutoSize = true;
label.Margin = new Padding(5, 5, 0, 0);
label.BackColor = ColorTranslator.FromHtml("#ccc");
flowLayoutPanel1.Controls.Add(label);
flowLayoutPanel1.SetFlowBreak(label, true);
}
}
}
几张图片展示了我的意思:
Image1: Strange space under the Label
Image2: No space under the Label when the form is resized (this is how I'd like this to work)
答案 0 :(得分:4)
这是一个错误,同一个as this one。额外的空间是下一个标签的高度。解决方法完全相同,只需在标签后添加宽度为0的虚拟控件。 - 汉斯帕斯特
首先,我在真实标签后删除了flowbreak:
flowLayoutPanel1.SetFlowBreak(label, true);
然后用以下代码替换它,神秘空间消失了!
Label dummyLabel = new Label();
dummyLabel.Width = 0;
dummyLabel.Height = 0;
dummyLabel.Margin = new Padding(0, 0, 0, 0);
flowLayoutPanel1.Controls.Add(dummyLabel);
flowLayoutPanel1.SetFlowBreak(dummyLabel, true);