0

我做了:

pbs = new PictureBox[8];
            pbs[0].Location = new Point(12, 27);
            for (int i = 0; i < pbs.Length; i++)
            {
                pbs[i].Size = new Size(100, 100);
                this.Controls.Add(pbs[i]);
            }

pbs 是图片框[]

我需要以某种方式计算图片框之间的空间。例如,pictureBox2 应该在位置:12,160 下一个在 12,.... 并且在窗体的每一侧都有 4 个图片框。我的 form1 尺寸是 800x600 所以我想要左侧有 4 个图片框,右侧有 4 个。

我如何计算位置?

4

1 回答 1

1

你不需要这样计算位置,我们应该使用一些布局控制来解决这个问题。只需添加 2 Panels,第一个停靠在表单的左侧,第二个停靠在表单的右侧。

panel1.Dock = DockStyle.Left;
panel2.Dock = DockStyle.Right;
panel1.Width = panel2.Width = 100;

现在,您只需要添加 4 个图片框panel1和 4 个图片框到panel2,同样使用Dock如下属性:

for (int i = 0; i < pbs.Length; i++) {
   pbs[i].Size = new Size(100, 100);
   pbs.Margin = new Padding(0, 0, 0, 60);
   pbs.Dock = DockStyle.Top;
   Panel p = i < 4 ? panel1 : panel2;
   p.Controls.Add(pbs[i]);
   pbs.BringToFront();
}

您也可以使用FlowLayoutPanel代替Panel,它会自动为您停靠控件。

flowLayoutPanel1.Dock = DockStyle.Left;
flowLayoutPanel2.Dock = DockStyle.Right;
flowLayoutPanel1.Width = flowLayoutPanel2.Width = 100;
flowLayoutPanel1.FlowDirection = flowLayoutPanel2.FlowDirection = FlowDirection.TopDown;

for (int i = 0; i < pbs.Length; i++) {
   pbs[i].Size = new Size(100, 100);
   pbs.Margin = new Padding(0, 0, 0, 60);
   Control p = i < 4 ? flowLayoutPanel1 : flowLayoutPanel2;
   p.Controls.Add(pbs[i]);
}
于 2013-10-11T18:49:45.607 回答