How to access a run time generated PictureBox on the form

  • Thread starter Thread starter Jim McGivney
  • Start date Start date
J

Jim McGivney

In C# on Form1 I genetate an array of PictureBoxes and populate each with an
image as seen in the code below.
Later on I want to access a specific PictureBox to change its image, but I
keep getting the error "The name 'PictureBox1' does not exist in the current
context"
The code I use to try to access the PictureBox is "PictureBox1[Target].Image
= HoldBitMap; " where kount is an integer.
I know the answer is probably in using the Controls collection but I can't
get the syntax correct.
Thanks in advance for your help.
Jim


private void InitializePictureBox()
{
//allocate the picture box
PictureBox[] PictureBox1 = new PictureBox[1000];
int i;
int j;
int kount = 0;
Random randObj = new Random(unchecked((int)
(DateTime.Now.Ticks)));

//initialise each picture box
for(i=0; i<8; i++)
{
for (j = 0; j < 6; j++)
{
PictureBox1[kount] = new PictureBox();

// Set the location and size of the PictureBox control.
PictureBox1[kount].Location = new
System.Drawing.Point(100 * i, 100 * j);
PictureBox1[kount].Size = new System.Drawing.Size(99,
99);
PictureBox1[kount].TabStop = false;

// Set the SizeMode property to the StretchImage value.
This
// will shrink or enlarge the image as needed to fit
into
// the PictureBox.
PictureBox1[kount].SizeMode = PictureBoxSizeMode.Zoom;
// .StretchImage;

// Set the border style to a three-dimensional border.
PictureBox1[kount].BorderStyle = BorderStyle.Fixed3D;

//Wire the picture boxes click to new common click
handler.
PictureBox1[kount].Click += new
System.EventHandler(ClickHandler);
PictureBox1[kount].Tag = kount;
// Add the PictureBox to the form.
Controls.Add(PictureBox1[kount]);
// Add the image
PictureBox1[kount].Image = MakeBitMap();
kount++;
}
}
}
 
Thanks for your help. Could you possibly show me some code (syntax) that I
can use to make my pictureBox array an instance member using the code in my
posting. Thanks for your help,
Jim
 
Simply move it outside of the method.
For the record, I'd probably use a List<PitureBox> rather than a
PictureBox[] so that I can resize it more easily...

Marc


// declare the field
PictureBox[] PictureBox1;

private void InitializePictureBox()
{
//allocate the picture box
PictureBox1 = new PictureBox[1000];

// ...
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top