C#更改FlowLayoutPanel内控件的位置

C#更改FlowLayoutPanel内控件的位置,c#,winforms,tablelayoutpanel,flowlayoutpanel,C#,Winforms,Tablelayoutpanel,Flowlayoutpanel,我正在使用flowLayoutPanel进行相对位置控制。 我想更改flowLayoutPanel中控件的位置。 当我说位置时,我不是指在control2之前的control1或者类似的东西-我的意思是如果我有两个控件,比如说label和comboBox,comboBox的高度是21,label的高度是13,flowLayoutPanel的高度也是21。我想把标签放在flowLayoutPanel-((21-13)/2)的垂直中间。我不想要一些特定于垂直中间的东西,我想要一般的解决方案。流布局没

我正在使用
flowLayoutPanel
进行相对位置控制。 我想更改
flowLayoutPanel
中控件的位置。
当我说位置时,我不是指在control2之前的control1或者类似的东西-我的意思是如果我有两个控件,比如说
label
comboBox
comboBox
的高度是21,
label
的高度是13,
flowLayoutPanel
的高度也是21。我想把
标签
放在
flowLayoutPanel
-((21-13)/2)的垂直中间。我不想要一些特定于垂直中间的东西,我想要一般的解决方案。

流布局没有帮助:它只是将所有控件排列在一个列表中,调整它们的位置以适应面板。您可以通过将控件放在flow布局内的表格中来创建子组,或者仅使用表格进行最大控制。

您还可以将标签的上边距设置为(containerHeight labelHeight)/2

如何在tableLayoutPanel中准确设置控件的位置?我也不能在tableLayoutPanel内完成。我很喜欢使用tableLayoutPanel的想法-您可以通过设置列/行的尺寸来设置控制位置甚至尺寸。对于一个完整的GUI,它需要比把所有东西都放在FlowLayoutPanel中多一点计划,但我认为回报是值得的。对-你总是可以在每个单元格中停靠控件。工作得很好,我忘记了边距属性。谁是DaMan?你这个男人!这很有效。对于其他处理此问题的人,必须将边距复制到一个变量中,进行修改,然后进行回退。
    int cIndex = this.FlowLayoutPanel1.Controls.GetChildIndex(Button1);
    int bIndex = this.FlowLayoutPanel1.Controls.GetChildIndex(Button1);

    this.FlowLayoutPanel1.Controls.SetChildIndex(Button1, bIndex);
    this.FlowLayoutPanel1.Controls.SetChildIndex(Button2, cIndex);