2012-09-20 154 views
0

您好,我已经定位了我的form1中的20个图片框。我想将这20个图片框添加到我的图片框阵列中。我需要帮助如何将图片框动态添加到图片框阵列

private void Form1_Load(object sender, EventArgs e) 
    { 
     Control[] pBoxes = new PictureBox[20]; 
        for (int i = 0; i < 20; i++) 
        { 
         pBoxes[i] = new PictureBox(); 
         PBoxes[i] =System.Windows.Find("PictureBox" + i, true); 
        } 
    } 

我想这样的,但它没有工作

+0

你就不必为我可怜的编程知识分配控制阵列项目 – Star

回答

0

你正在创建 PictureBoxes,这肯定不是你想要的东西。相反,您需要在您的表单中获取PictureBox的现有实例。由于它们已添加到表单中,因此它们可能已作为Form1的成员存在(尤其是在使用设计器的情况下)。尝试:

var pBoxes = new PictureBox[] {pictureBox1, pictureBox2, pictureBox3, ...}; 

否则,你也可以做到以下几点来获得所有数组PictureBox这是直接孩子的Form1

var pBoxes = this.Controls.OfType<PictureBox>().ToArray(); 

不过要注意的是,如果PictureBoxes都在里面其他容器(例如面板),你将不得不缓慢通过所有容器来获得全部容器。

+0

索里之前初始化新的实例。如果使用var pBoxes = this.Controls.OfType ().ToArray(); 如何使用索引号 – diego

+0

@diego您可以使用它们的顺序不能保证。我建议你使用第一种方法来确定哪个索引在哪个索引中。 –

+0

你是真实的当我使用第二种方式它不知道picturebox1是在pBoxes [1]。如何在不使用第一种方法的情况下解决这个问题。非常感谢你 – diego

0

您可以使用LINQ轻松搞定所有的PictureBox ..

private void Form1_Load(object sender, EventArgs e) 
{ 
    var pBoxes = this.Controls.OfType<PictureBox>(); 
}