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);
                    }
    }

私はこのように試しましたが、うまくいきませんでした

4

2 に答える 2

0

あなたは新しいPictureBoxを作成していますが、それは確かにあなたが意図したものではありません。代わりに、フォームにPictureBoxの既存のインスタンスを取得する必要があります。それらはすでにフォームに追加されているため、おそらくすでにメンバーとして存在していForm1ます(特にデザイナーを使用している場合)。試す:

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

それ以外の場合は、次のようにして、 :の直接の子であるすべての配列を取得することもできます。PictureBoxForm1

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

ただし、PictureBoxが他のコンテナ(Panelなど)内にある場合は、すべてのコンテナを再帰的に処理してすべてを取得する必要があることに注意してください。

于 2012-09-20T13:08:28.003 に答える
0

Linqを使用してすべてのPictureboxを簡単に取得できます。

private void Form1_Load(object sender, EventArgs e)
{
   var pBoxes = this.Controls.OfType<PictureBox>();
}
于 2012-09-20T13:08:36.763 に答える