pictureboxes bei Laufzeit erzeugen

FWerewolf

Grünschnabel
Hi,

Ich hab eine Datenbank, in der Datensätze abgelegt sind. Diese enthalten ein Feld "active". Wenn das auf 1 gesetzt ist, soll eine Picturebox für den Datensatz auf einer Tab einer Tabcontrol einem Formular erzeugt werden. Die DB Abfrage ist kein Problem, die Daten kommen korrekt raus und werden in eine DataRow geschoben.

Das entsprechende Codesegment schaut so aus :

int lauf;
private System.Windows.Forms.PictureBox[] activated;

lauf = 0;
foreach (DataRow dataRow in dataTable.Rows)
{
activated[lauf] = new System.Windows.Forms.PictureBox();
this.tabPage1.Controls.Add(this.activated[lauf]);
// diverse Definitionen der Pictorebox wie Größe, Position usw.
lauf++;
}

Sobald ich den Code ausführe, kommt eine Fehlermeldung :

-------------------
Eine nicht behandelte Ausnahme des Typs 'System.NullReferenceException' ist in WDDatenbanktool.exe aufgetreten.

Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
--------------------

Wenn ich die Variablen abscanne, seh ich , daß activated[lauf] einen nicht definierten Wert hat. Der Fehler kommt aber erst beim Control.Add. Auch bei lauf=1 kommt derselbe Fehler.

Weiß jemand von euch, was ich da falsch mache oder hat jemand einen Code, mit dem ich die Pictureboxes zur Laufzeit erzeugen kann ?

Vielen Dank,
Markus
 
Hallo.

Code:
int lauf;
private System.Windows.Forms.PictureBox[] activated;

lauf = 0;
foreach (DataRow dataRow in dataTable.Rows)
{
activated[lauf] = new System.Windows.Forms.PictureBox();
this.tabPage1.Controls.Add(this.activated[lauf]);
// diverse Definitionen der Pictorebox wie Größe, Position usw.
lauf++;
}

Du hast zwar das PictureBox-Array deklariert, aber nicht initialisiert.

Code:
private System.Windows.Forms.PictureBox[] activated = new PictureBox[dimension];

Wieviele PictureBoxen du brauchst solltest du vorher noch rausfinden, oder einen anderen Collection-Typ benutzen.

Mfg,
Alex
 
Zurück