Labels automatisch erstellen

phap69

Mitglied
Hallo,

ich möchte gerne ein label (oder irgendein anderes beliebiges Formularobjekt) automatisch erstellen.

Habe dazu folgenden code probiert (nur zum Testen!):

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
       
        int ypos = 80;
        int xpos = 50;       
        Label[] labelname = new Label[10];
        
        public Form1()
        {
            InitializeComponent();            
        }
        private void addLabel()
        {
            for (int a = 0; a < 10; a++)
            {
             //Ein neues Label erstellen
            labelname[a]=new Label();
            labelname[a].Location = new System.Drawing.Point(xpos, ypos);
            labelname[a].Text = "Das steht drin";
            //Mit der folgenden Zeile wird das Label der Form hinzugefügt 
            this.Controls.Add(labelname[a]);
            ypos += 10;
            }
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
                addLabel();
         }
    }
}

Ich hatte eigentlich erwartet, dass jetzt 10 neue Labels untereinander angezeigt werden. Leider kommt aber nur eins. Sieht jemand meinen Fehler?

Vielen Dank.
 
Hallo,

hab gerade kein Visual Studio da, aber musst man nicht noch den Owner setzen?
C#:
...
labelname[a].Owner = this;
this.Controls.Add(labelname[a]);
...
 
Danke für die Antwort Turri,

aber dein Vorschlag liefert folgenden Compilier-Fehler:

System.Windows.Forms.Label" enthält keine Definition für "Owner", und es konnte keine Erweiterungsmethode "Owner" gefunden werden, die ein erstes Argument vom Typ "System.Windows.Forms.Label" akzeptiert.
 
Habe den Fehler entdeckt, saublöd!

ypos +=10 ist einfach zu wenig, um in der Form einen Positionsunterschied wahrzunehmen. Da überlappen sich alle Labels noch!
 
@Turri:
C#:
this.Controls.Add(...)
ist schon der richtige Weg, um den Besitzer des Controls festzulegen.

@phap69:
Wenn du die Labels untereinander stapeln möchtest, dann kannst du die Height-Eigenschaft der vorherigen Labels aufsummieren und so die neue Position ermitteln.
 

Neue Beiträge

Zurück