我在Windows窗体应用程序中有几个面板,它们分为两列,最多4行,最多8个面板。每个面板中包含的元素数量在运行时期间会发生变化,因此不要浪费在监视器上我将所有元素设置为自动调整大小。问题是,我不知道如何保持它们正确放置,比如当第一个缩小时其他三个有点上升,所以它们之间没有太多空间。
答案 0 :(得分:2)
尝试使用TableLayoutPanel
或FlowLayoutPanel
(或甚至可能是SplitContainer
)。它们对于这种任务都非常有用。您可以在工具箱的Containers
部分找到它们。您可以通过适当设置面板的边距来保持正确的距离。 TableLayoutPanel
为您提供了调整行和列大小的绝对选项(绝对值或百分比大小或自动值)。此外,通过使用面板和控件的Dock
或Anchor
属性,您可以在调整大小或添加和删除控件时获得动态行为。
您可能还需要设置控件的MinimumSize
和MaximumSize
属性。
您可以添加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);