C# Objekte erstellen mit for-Schleife

3

37

Gast
Hallo,

ich versuche mehrere Objekte mit einer Schleife zu erstellen, aber ich bekomme eine Fehlermeldung:
Der Index war außerhalb des Arraybereichs.

Hier ist der Code:
Code:
private void Form1_Load(object sender, EventArgs e)
        {
            int x = 0;
            for (int i = 0; i < 4; i++)
            {
                Label[] lbl = new Label[i];
                lbl[i].Location = new Point(x, 150); // Hier kommt der Fehler
                lbl[i].Text = "Label1";
                this.Controls.Add(lbl[i]);
                x = x + 8;
            }
        }

Kann mir jemand helfen?
 
das is auch blödsinn... sorry :)

//edit:
oder ich habs nicht verstanden... aber so solltes gehn


Code:
private void Form1_Load(object sender, EventArgs e)
        {
            int x = 0;
            Label[] lbl = new Label[4];
            for (int i = 0; i < 4; i++)
            {
                lbl[i] = new Label();
                lbl[i].Location = new Point(x, 150); //Sollte jetzt weg sein ;)
                lbl[i].Text = "Label1";
                this.Controls.Add(lbl[i]);
                x += 8;
            }
        }
 
Zuletzt bearbeitet:
mach mal noch
Code:
private void Form1_Load(object sender, EventArgs e)
        {
            int x = 0;
            Label[] lbl = new Label[4];
            for (int i = 0; i < 4; i++)
            {
                lbl[i] = new Label();
[B]                lbl[i].Name = "Label" + i.ToString();[/B]
                lbl[i].Location = new Point(x, 150); //Sollte jetzt weg sein ;)
                lbl[i].Text = "Label1";
                this.Controls.Add(lbl[i]);
                x += 8;
            }
        }
rein
 
Ganz komische Sache... ich habs mal bei mir probiert, in der Controll-Collection tauchen alle 4 auf angezeigt wird aber tatsächlich nur das erste.
 
kann es sein, dass die einfach nur übereinander gezeichnet werden? Location ist immer gleich.
 
Wieso so kompliziert? oO

Code:
private void Form1_Load(object sender, EventArgs e)
        {
            int x = 0;
            for (int i = 0; i < 4; i++)
            {
                Label lbl = new Label();
                lbl.Name = "Label" + i.ToString();
                lbl.Location = new Point(x, 150); //Warum wird hier der Spalten-Wert erhöht aber die Zeile nicht?
                lbl.Text = "Label" + i.ToString(); // <- sollen ja wohl nicht alle gleich heißen, oder
                lbl.AutoSize = true;  // <- damit das Label nur so groß ist wie es sein muss
                this.Controls.Add(lbl);
                x += lbl.Width + 4;  // 8 ist viel zu wenig
            }
        }
Ich sehe keinen Grund wozu mein ein Array aus Labels definieren müsste oO

Zudem werden mehr Labels erstellt, nur überdecken sie sich gegenseitig wegen der Größe

um sie untereinander anzuordnen:
Code:
private void Form1_Load(object sender, EventArgs e)
        {
            int y = 0;
            for (int i = 0; i < 4; i++)
            {
                Label lbl = new Label();
                lbl.Name = "Label" + i.ToString();
                lbl.Location = new Point(4, y); 
                lbl.Text = "Label" + i.ToString();
                lbl.AutoSize = true;
                this.Controls.Add(lbl);
                y += lbl.Height + 4;  // 8 ist viel zu wenig
            }
        }
 
Zuletzt bearbeitet:
Zurück
Oben