如何在表单大小调整中移动面板中的所有控件?

时间:2010-08-07 06:04:14

标签: c# winforms layout controls resize

我正在玩一个项目,C#.NET 4,我有点卡住了。我有一个面板,将根据文件夹中的项目数动态填充复选框,这可以正常工作。

但是当我调整表单大小时,我希望复选框在面板中移动,就像一个小网格的复选框,占据了它可以占用的空间。

到目前为止,我一直没有找到一种有效的方法来做到这一点。我还没有完成它的工作,但我不知道这很重要。我正在尝试的方法是资源杀手。

int boxCount = panel1.Size.Width/123;
int x = 3, y = 3, i = 0;

foreach (Control chkbox in panel1.Controls)
{

      if (i < boxCount)
      {
            chkbox.Location = new Point(x, y);
            x += 123;
      }
      else
      {
            i = 0;
            x = 3;
            y += 123;
            chkbox.Location = new Point(x, y);
      }

      i++;
}

我正在寻找一些不会让我的CPU处于阻塞状态的东西,并在调整大小时将我的表单变成3页翻页。作为参考,我想到了7个Windows桌面壁纸选择器,减去了实际控件的大小调整。

我没有使用WPF,但我很可能会开始看到它,所以我正在寻找一种花园式的Windows Forms解决方案。

2 个答案:

答案 0 :(得分:4)

听起来你正在寻找FlowLayoutPanel

答案 1 :(得分:1)

TableLayoutPanelFlowLayoutPanel会满足您的需求吗?