以编程方式添加的项目到FlowLayoutPanel并不像设计时那样对齐

时间:2015-08-03 15:43:04

标签: c# .net winforms

以下是程序化插入之前的面板:

The labels at runtime before programmatic add

之后:

The labels after programmatic insertion

我已经在Review标签样式中添加了其他行复制,希望它是填充或边距问题。不幸的是,情况似乎并非如此。为了澄清,FlowLayoutPanel本身向右延伸超出了新标签应该需要的距离,如下所示:

Bounds of FlowLayoutPanel

所有其他Label已启用AutoSize

以下是生成和插入的代码:

Label newLabel = new Label();
newLabel.Name = optionString;
newLabel.Text = type;
newLabel.Font = ReviewLabel.Font; // just a random label. only thing that matters is consistent styling.
newLabel.ForeColor = ReviewLabel.ForeColor;
newLabel.Margin = ReviewLabel.Margin;
newLabel.Padding = ReviewLabel.Padding;

LabelsPanel.Controls.Add(typeLabel);

optionStringtype,其中删除了空格。 type的价值是'服务条款。'谢谢你的帮助。

编辑:这里说明了如果我在设计时定义Label,只需将Label从控制面板拖到表单上并设置{{1} }和Size属性。

Design time Terms label

Runtime Terms label

2 个答案:

答案 0 :(得分:3)

请参阅Label.AutoSize()上的说明:

  

使用设计器添加到表单时,默认值为true。   从代码实例化时,默认值为false。

所以你可能需要添加:

newLabel.AutoSize = true;

答案 1 :(得分:1)

默认情况下,AutoSize控件上的Label默认设置为true。设置解决了这个问题。虽然与布尔值默认值的行为方式一致,但它与您在与设计器交互时看到的默认行为不同。那就是脱节。