我做了:
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个。
我如何计算位置?
答案 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]);
}