2013-10-11 31 views
0

我所做的:如何创建pictureBoxess数组?

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是图片框[]

我需要的是一个以某种方式计算pictureBoxes之间的空间。 例如pictureBox2应在位置:12,160 下一个在12,.... 和4个图片框位于窗体的每一侧。 我的form1大小是800x600 所以我想要4个pictureBoxes在左边和4在正确的大小。

我该如何计算位置?

+1

使用加法?只需将差距添加到以前的PictureBox的位置。 – SLaks

回答

1

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

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

,你只需要4个pictureboxes到panel1和4个pictureboxes添加到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]); 
}