C# 如何有序地在彼此下面生成控件?

C# 如何有序地在彼此下面生成控件?,c#,controls,location,spacing,C#,Controls,Location,Spacing,我有一个生成表单和控件的类。按钮、单选控件、复选框和标签之间的控件有所不同。其思想是在每个控件上方整齐地创建带有标签的表单。问题是我似乎找不到公式或方法来整齐地组织/分隔它们。当我只有文本框时,它可以正常工作,但我不知道如何处理更大的控件,如复选框列表。下面是我如何处理文本框的示例: case "Text": TextBox tbx = new TextBox(); tbx.Name = df.Value.N

我有一个生成表单和控件的类。按钮、单选控件、复选框和标签之间的控件有所不同。其思想是在每个控件上方整齐地创建带有标签的表单。问题是我似乎找不到公式或方法来整齐地组织/分隔它们。当我只有文本框时,它可以正常工作,但我不知道如何处理更大的控件,如复选框列表。下面是我如何处理文本框的示例:

            case "Text":
                TextBox tbx = new TextBox();
                tbx.Name = df.Value.Name;
                tbx.Text = (df.Value.DefValue != null) ? df.Value.DefValue : "";
                tbx.Location = new Point(lbl.Location.X, lbl.Location.Y + 20);
                f.Controls.Add(tbx);
                break;
请注意,这一切都在一个
foreach
循环中。这是其前面的零件(标签):

这将以均匀的间距整齐地排列文本框和标签。有人能给我一些关于如何处理不同控制的建议吗?我想把它们放在彼此下面,但从每个控件的底部到下一个标签的顶部至少保持10个像素的间距

提前感谢。

请使用。您可以在代码隐藏文件中查看设计器是如何实现的


对于间距,请填写控件的“边距”属性。5个在上面,5个在下面就可以了。

天哪,我从来没有想过要这样做。非常感谢你,我相信这会成功的!
        if (i == 0)
        {
            lbl.Location = new Point(10, 10);
        }
        else
        {
            lbl.Location = new Point(10, (i * 50) + 10);
        }