C# Problem mit Schleife und Array

LiveKeeper

Losesammler
ID: 53671
L
30 April 2006
2.196
148
Hallo Leute!

Folgendes kleines Problem:

Ich hab 6 Picture Boxen denen per Zufall aus einem Array Bilder zugewiesen werden sollen. Leider funktioniert das aber nicht so ganz bei mir. Ich bekomm andauernd einen Index out of Range Fehler.

Ich habs auch schon mit foreach probiert, ist das gleiche Problem.

Code:
Image[] bild = new Image[6];
             bild[0] = Image.FromFile...
             ...
             bild[5] = Image.FromFile...

for (int i = 1; i < 6; i++)
            {
                PictureBox[] pb = new PictureBox[i];
                Random randomNumber = new Random();
                int rndNum = randomNumber.Next(0, 5);
                pb[i].Image = Image[rndNum];   <------ In dieser Zeile ist dann der Fehler
            }

Vielleicht hat ja jemand ne Lösung für mich.

Vielen Dank schonmal im voraus
LiveKeeper

PS: Noch ne kleine Info: Wenn ich die Bilder einzeln ohne die Schleife reinschreib funktioniert das einwandfrei.
 
Zuletzt bearbeitet:
hmm

statt
pb.Image = Image[rndNum];
vielleicht
pb.Image = bild[rndNum];

das bekommst du kompiliert?
 
Nein leider auch nicht - gleiches Problem

*edit*

Ja starten kann ich. Ich muss dann auf nen Button klicken damit die Bilde verteilt weden. dann kommt der Fehler
 
das doch alles etwas wir?

Du erzeugst in der for ein PB mit 1,2,3,4,5er länge.
Und dann greifst auch auf index 1 zu, die es bei länge 1 nicht gibt (Das

Code:
Image[] bild = new Image[6];
             bild[0] = Image.FromFile...
             ...
             bild[5] = Image.FromFile...

PictureBox[] pb = new PictureBox[6];
for (int i = 1; i < 6; i++)
            {
                
                Random randomNumber = new Random();
                int rndNum = randomNumber.Next(0, 5);
                pb[i].Image = bild[rndNum];   <------ In dieser Zeile ist dann der Fehler
            }


*edit*
muß feierabend machen wenn ich so einen simplen Code nicht gleich durchschaue....
 
Erstmal Danke für Deine Hilfe.

Wenn den Code jetzt so verwende wie Du den jetzt abgeändert hast, bekomme ich dann diese Meldung

"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
 
Sag doch ich muss Feierabend machen :)
Jetzt im Bus ohne es zu sehen weiß ich die Lösung.
Du must die Pb noch anlegen hast ja nur ein Array erstellt.

pb= new Picturebox();
 
Jo Danke, habs eben auch rausgefunden.

Hab jetzt auch keinen Fehler mehr, allerdings werden die Bilder jetzt nicht angezeigt.

PictureBox[] pb = new PictureBox[6];

for (int i = 0; i < 5; i++)
{
pb = new PictureBox();
Random randomNumber = new Random();
int rndNum = randomNumber.Next(0, 5);
pb.Image = bild[rndNum];
}

Gruss
LK
 
naja, was machst du denn sonst so mit der pb?

Die mußt du ja auch im Fenster einfügen. So sind Sie ja nur sozusagen im Speicher.
 
Hm

Ich glaub ich erkläre das irgendwie falsch oder steh grad voll auf der Leitung. gg

Ich versuchs nochmal:
Also ich hab mein Windows Forms Fenster auf dem Hab ich 13 pictureBoxen platziert. Die sind also schon vorhanden.

Nun sollen meine 6 Bilder vom Array aber nur in die bereits vorhandene pictureBox8 bis pictureBox13.

Gruss
LK
 
naja dann mußt du die auch in picturbox8-13 rein schreiben.
Du malst ja die bilder in pb[x] rein.

aber pb[x] ist ja nicht in die Seite integriert.



PictureBox[] pb = new PictureBox[6];
pb[0] = pictureBox8;
pb[1] = pictureBox9;
pb[2] = pictureBox10;
pb[3] = pictureBox11;
pb[4] = pictureBox12;
pb[5] = pictureBox13;


for (int i = 0; i < 6; i++)
{
Random randomNumber = new Random();
int rndNum = randomNumber.Next(0, 5);
pb.Image = bild[rndNum];
}