我怎样才能创建pictureBoxess数组?

时间:2013-10-11 18:42:43

标签: c# winforms

我做了:

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是pictureBox []

我需要的是以某种方式计算pictureBoxes之间的空格。 例如,pictureBox2应位于:12,160 下一个12点,.... 表格两边各有4个图片框。 我的form1大小是800x600 所以我想在左侧有4个pictureBoxes,在右边有4个。

我如何计算位置?

1 个答案:

答案 0 :(得分:1)

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

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

现在,您只需要向panel1添加4个图片框,向panel2添加4个图片框,同样使用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]);
}