Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / C# / May 2008

Tip: Looking for answers? Try searching our database.

How to access a run time generated PictureBox on the form

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Jim McGivney - 09 May 2008 03:26 GMT
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]
>     // ...
> }

Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.