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++;
}
}
}
Peter Duniho - 09 May 2008 04:52 GMT
> In C# on Form1 I genetate an array of PictureBoxes and populate each
> with an image as seen in the code below.
[quoted text clipped - 5 lines]
> I know the answer is probably in using the Controls collection but I
> can't get the syntax correct.
You could indeed use the controls collection. However, it would be easier
and more reliable for you to just declare your array as an instance member
in your class, rather than as a local variable as you've done in the code
you posted. Then the array would be available anywhere in your class,
rather than just that one method.
Pete
Jim McGivney - 09 May 2008 15:12 GMT
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
> In C# on Form1 I genetate an array of PictureBoxes and populate each with
> an image as seen in the code below.
[quoted text clipped - 56 lines]
> }
> }
Marc Gravell - 09 May 2008 15:25 GMT
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];
// ...
}
Jim McGivney - 09 May 2008 20:46 GMT
Thanks for your help. It worked.
Jim
> Simply move it outside of the method.
> For the record, I'd probably use a List<PitureBox> rather than a
[quoted text clipped - 12 lines]
> // ...
> }