C# 动态控制布局

C# 动态控制布局,c#,winforms,C#,Winforms,我试图构建一个相当复杂的UI,并尽量减少未使用的空间 我有一个未知数量的控件,我想把它们分组到面板中。所有这些面板都应添加到父面板 因此,它可能类似于包含6个子面板的单个父面板。其中一个可能有两个复选框和一个文本框。另一个可能有3个下拉列表,等等。我在设计时不知道。也可能是这样,我需要子面板以特定的顺序显示,而不是以最佳方式来节省空间 我尝试在父面板和子面板中使用FlowLayout。我认为这将是解决方案的一部分,但我不知道该怎么办。我考虑过测试每一种可能的流动中断组合,并选择父面板高度最小的组

我试图构建一个相当复杂的UI,并尽量减少未使用的空间

我有一个未知数量的控件,我想把它们分组到面板中。所有这些面板都应添加到父面板

因此,它可能类似于包含6个子面板的单个父面板。其中一个可能有两个复选框和一个文本框。另一个可能有3个下拉列表,等等。我在设计时不知道。也可能是这样,我需要子面板以特定的顺序显示,而不是以最佳方式来节省空间

我尝试在父面板和子面板中使用FlowLayout。我认为这将是解决方案的一部分,但我不知道该怎么办。我考虑过测试每一种可能的流动中断组合,并选择父面板高度最小的组合,但这太耗计算量了

有什么资源可以涵盖这类事情吗?或者我的方法错了?我想我的用户会希望控件尽可能紧密地打包,但要分组。如果不是因为尝试对它们进行分组,我也许可以使用单亲FlowLayout面板


我认为这个问题几乎类似于打包问题,但由于分组的原因,它更像是打包问题中的打包问题。

只是关于在特定布局中生成动态控件的简要说明。我假设您将从某个数据源加载控件的数据。如果你能为你的源代码添加几列数据,那么你的生活就会变得简单

GroupID和SortOrder都可以是简单的int字段

每当我完成动态布局时,我发现如果您对数据有一些顺序,那么编写通用插入逻辑就容易多了。然后可以在数据中切换组和排序,而无需在代码中重新编写一些疯狂的case语句,否则您将不得不编写这些语句