Laden...

Dynamische Panel hinzufügen

Erstellt von Meinerses vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.730 Views
M
Meinerses Themenstarter:in
16 Beiträge seit 2010
vor 13 Jahren
Dynamische Panel hinzufügen

Hallo zusammen,
ich habe folgendes Problem ich möchte ein Panel Dynamisch mit weiteren Panels befüllen.
Das 1 Problem es wird nur das 1 Panel hinzugefügt.
Das 2 Problem in jedem Panel werden auch nur das 1 Label und die textbox angezeigt.

Ich habe bereits mit Refresch und Update versucht und die größen zu verändern immer die selben Probleme.

Teilcode:

Panel[] parray = new Panel[10];

parray[i] = new Panel();
parray[i].Height = 18;
parray[i].Width = 180;
parray[i].BorderStyle = BorderStyle.FixedSingle;

parray[i].Controls.Add(label);
parray[i].Controls.Add(textbox);
parray[i].Controls.Add(label);

festplatten.Controls.AddRange(parray);
2.082 Beiträge seit 2005
vor 13 Jahren

Hallo Meinerses,

sind die Positionen / Größen der Panels auch unterschiedlich?

parray[i].Controls.Add(label);
parray[i].Controls.Add(textbox);
parray[i].Controls.Add(label);

Fügt das gleiche Label 2 mal hinzu, d.h. es wird sich nichts ändern. Du müsstest das zweite Label erst neu instanziieren.

Beachte zusätzlich: [Hinweis] Wie poste ich richtig? Punkt 6

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

M
Meinerses Themenstarter:in
16 Beiträge seit 2010
vor 13 Jahren

Die größen sind gleich je 250*18 und Position rechne ich je 20 drauf.
Übereinander können sie auch nicht liegen da mir das 1 Panel angezeigt wird und nicht das letzte.

Es werden 2 verschiedene Labels hinzugefügt hab nur zum verschändniss nur label rein geschrieben

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Meinerses,

machst du wirklich für jedes weitere Panel und Control ein neues new Panel, new Label usw.? Wenn ja, dann sollte es auch gehen.

herbivore

M
Meinerses Themenstarter:in
16 Beiträge seit 2010
vor 13 Jahren
 Panel[] parray = new Panel[(atmp.Length - 1)];
            Label[] larray = new Label[(atmp.Length - 1)];

            for (int i = 0; i < (atmp.Length-1) ; i++ )
            {
                string[] text = atmp[i].Split('$');

                parray[i] = new Panel();
                parray[i].Height = 18;
                parray[i].Width = 250;
                parray[i].Location = new System.Drawing.Point(0, i*20);
              
                Label tmp = new Label();
                tmp.Text = text[0];
                tmp.Height = 15;
                tmp.Width = 25;
                tmp.Location = new System.Drawing.Point(0,0);
                parray[i].Controls.Add(tmp);

                string beschriftung = "",
               
                Label schrift = new Label();
                schrift.Text = beschriftung;
                schrift.Height = 15;
                schrift.Width = 130;
                schrift.Location = new System.Drawing.Point(25, 0);
                parray[i].Controls.Add(schrift);

                DataBar db = new DataBar();
                db.Value = (int)Double.Parse(text[1]);
                db.Width = 90;
                db.Height = 15;
                db.Location = new System.Drawing.Point(155, 0);
                parray[i].Controls.Add(db);

                parray[i].Refresh();
                //festplatten.Controls.Add(parray[i]);
            }

            festplatten.Controls.AddRange(parray);
49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Meinerses,

wird die Schleife tatsächlich mehrmals durchlaufen?

Das zweite Label ist möglicherweise deshalb nicht zu sehen, weil es keinen Text enthält.

Der Rest sollte passen.

Siehe auch Control wird nicht angezeigt.

herbivore

M
Meinerses Themenstarter:in
16 Beiträge seit 2010
vor 13 Jahren

Ja hab mit MessageBox überprüft ob auch alle Daten richtig sind also Schleife wir mehrmals durchlaufen.

Sry hatte kurz was ausprobiert und danach vergessen den Text hinzuzufügen. Funktioniert aber trotzdem nicht.

F
10.010 Beiträge seit 2004
vor 13 Jahren

Wo fügst du denn die Panels in deine Forms.Controls ein?

Ganz abgesehen davon, ginge das mit einem DataGridView einfacher und resourcenschonender.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Meinerses,

Panel[] parray = new Panel[(atmp.Length** - 1**)];
Label[] larray = new Label[(atmp.Length** - 1**)];
for (int i = 0; i < (atmp.Length-1) ; i++ )

herbivore