保持面板之间的距离相同

时间:2012-12-08 20:26:30

标签: c# winforms panel

我在Windows窗体应用程序中有几个面板,它们分为两列,最多4行,最多8个面板。每个面板中包含的元素数量在运行时期间会发生变化,因此不要浪费在监视器上我将所有元素设置为自动调整大小。问题是,我不知道如何保持它们正确放置,比如当第一个缩小时其他三个有点上升,所以它们之间没有太多空间。

1 个答案:

答案 0 :(得分:2)

尝试使用TableLayoutPanelFlowLayoutPanel(或甚至可能是SplitContainer)。它们对于这种任务都非常有用。您可以在工具箱的Containers部分找到它们。您可以通过适当设置面板的边距来保持正确的距离。 TableLayoutPanel为您提供了调整行和列大小的绝对选项(绝对值或百分比大小或自动值)。此外,通过使用面板和控件的DockAnchor属性,您可以在调整大小或添加和删除控件时获得动态行为。

您可能还需要设置控件的MinimumSizeMaximumSize属性。

您可以添加TableLayoutPanel

这样的控件
int count = tableLayoutPanel1.Controls.Count;
int newColumn = count % 2;
int newRow = count / 2;
if (newRow >= tableLayoutPanel1.RowCount) {
    tableLayoutPanel1.RowCount++;

    // Set appropriate row style
    tableLayoutPanel1.RowStyles.Add(new RowStyle { SizeType = SizeType.AutoSize });
}
var newControl = new Button { Dock = DockStyle.Fill };
tableLayoutPanel1.Controls.Add(newControl, newColumn, newRow);