プロが教えるわが家の防犯対策術!

いつもお世話になります。
C#について質問です。VisualC#2008を使っています。

private PictureBox[] pictArray = new PictureBox[100];

private void Box_Load()
{
PictureBox pict;
int nIdx = 0;
while (nIdx < pictArray.Length)
{
pict = new PictureBox();
pictArray[nIdx] = pict;
pict.Click += new EventHandler(pict_Click);
nIdx++;
}
}

のように、あるメソッドで配列にpictureboxの画像を代入(?)していく処理をしています。このメソッドを別のメソッドで呼び出し、

pictArray[1]に格納されているpicturebox
pictArray[2]に格納されているpicturebox 

…といった具合に、次々と表示させていきたいと考えています。しかし1つしかpictureboxが表示されません。具体的には以下のようなプログラムを組んでいるところです。

private void pict_Click(object sender, EventArgs e)
{
Box_Load();
kihon_pict.Location = new Point(10, yy);
this.panel1.Controls.Add(pict);
yy += 40;
}

誰か解決策を教えていただけないでしょうか?
よろしくお願いします。

A 回答 (1件)

 こんばんは。



 う~む、多分、フォームと同じ「ねずみ色」だから気付かないのかもしれません。
 派手な色を着色するか、枠を目立つスタイルにすれば確認出来るのではないでしょうか。
 以下はボタンを押す度、ピクチャーボックスを縦に並べていきます。

//配列数は0で構わない
private PictureBox[] pictArray = new PictureBox[0];

private void button1_Click(object sender, EventArgs e)
{
this.SuspendLayout();

//配列の拡大
Array.Resize(ref this.pictArray, this.pictArray.Length + 1);

//ピクチャボックスの作成
PictureBox picture = new PictureBox();

//配列にピクチャーボックスを代入
pictArray[this.pictArray.Length - 1] = picture;

//ピクチャーボックスに名前を付ける(多分必須)
picture.Name = "picture box " + this.pictArray.Length.ToString();

//位置を指定する
picture.Location = new Point(0, 40 * (this.pictArray.Length - 1));

//大きさを指定する
picture.Size = new Size(40, 40);

//枠のスタイルを派手にする
picture.BorderStyle = BorderStyle.Fixed3D;

//色を派手にする
picture.BackColor = Color.AliceBlue;

//コントロールに追加
this.Controls.Add(picture);

this.ResumeLayout(false);
this.PerformLayout();

//ピクチャーボックスを表示する
picture.Show();
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
丁寧なコメントで、とてもわかりやすかったです。
参考になりました!!

お礼日時:2010/01/23 10:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!