C# For Schleife und Bilderarray

LiveKeeper

Grünschnabel
Hallo Leute!
Bin noch ganz am Anfang was C# betrifft und würde etwas Hilfe benötigen.

Ich habe folgendes Problem:
Ich habe 6 PictureBoxen in die ich per Forschleife 6 Bilder aus einem Array per Zufallsgenerator platzieren will.
Nur funktioniert das leider nicht so ganz. Ohne die ForSchleife funktionierts aber einwandfrei.
Mitels der ForSchleife würde ich aber gerne den Index für die PictureBox hochzählen.

Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Hier mal der Code:
Code:
Image[] bild = new Image[6];

             bild[0] = Image.FromFile("d:\\bilder\\s.jpg");
             .
             .
             bild[5] = Image.FromFile("d:\\bilder\\o.jpg");

            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]; <------Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
            }

Vielen Dank schonmal im voraus für Eure Hilfe

Gruss
LiveKeeper
 
Zuletzt bearbeitet:
Hi und Willkommen bei tutorials.de :)

Was funktioniert denn genau nicht?
Compilerfehler, Absturz, ...?

Die Schleife sollte übrigens bei 0 zu zählen anfangen.
Die 6 PictureBoxen haben die Indizes 0-1-2-3-4-5

Gruß
 
Du musst erst ein PictureBox-Objekt erstellen, bevor du die Image-Eigenschaft festlegen kannst:
C#:
pb[i] = New PictureBox();  // Beachte: jetzt ist zwar eine PictureBox erstellt, sie wird aber noch nicht gerendert. Dazu muss sie erst einer Controls-Auflistung hinzugefügt werden!
pb[i].Image = bild[rndNum];
 
Jo habs jetzt mal auf 0 ausgebessert, ändert aber an der Fehlermeldung auch nichts.

Also ich kann das ohne Probleme Compilieren. Wenn ich dann auf den Button Klicke womit die Bilder dann verteilt werdenm sollen bekomm ich diese Fehlermeldung.

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

in dieser Codezeile
Code:
 pb[i].Image = bild[rndNum];

Gruss
LiveKeeper
 
Jo habs nun abgeändert, Die Fehlermeldung ist weg.
Wenn ich jetzt nen Haltepunkt setze und da Schrittweise reingeh, funktioniert das jetzt auch.

Nur leider werden keine Bilder angezeigt.

*edit*

Sorry wegen dem Doppelpost
 
Also ich hab das jetzt so:
Code:
            PictureBox[] pb = new PictureBox[6];
            
            for (int i = 0; i < 5; i++)
            {
                pb[i] = new PictureBox();
                Random randomNumber = new Random();
                int rndNum = randomNumber.Next(0, 5);
                pb[i].Image = bild[rndNum];
            }

Was ich noch hinzufügen sollte:
Ich hab insgesamt 13 PictureBoxen. Die 6 Bilder sollen aber nur in die PictureBox8 bis PictureBox13.

Gruss
LiveKeeper
 
Vielen Dank!
Das funktioniert jetzt soweit, muss es jetzt nur noch an die richtige Stelle bringen.

Gruss
LiveKeeper
 

Neue Beiträge

Zurück