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);
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
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
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
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);
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
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.
Wo fügst du denn die Panels in deine Forms.Controls ein?
Ganz abgesehen davon, ginge das mit einem DataGridView einfacher und resourcenschonender.
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