PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C#: Wie Bedienelemente zur Laufzeit erstellen?


aths
2005-11-20, 14:14:45
ListBox lb1 = new ListBox();
lb1.Show();
lb1.Top = 001;
lb1.Left = 001;
lb1.Width = 300;
lb1.Height = 300;
lb1.Show();


Das .Show(); ist gleich 2x aufgerufen und damit einmal redundant, aber zu sehen bekomme ich Listbox trotzdem nicht. Was ist im Quelltext falsch?

grakaman
2005-11-20, 14:26:15
ListBox lb1 = new ListBox();
lb1.Show();
lb1.Top = 001;
lb1.Left = 001;
lb1.Width = 300;
lb1.Height = 300;
lb1.Show();


Das .Show(); ist gleich 2x aufgerufen und damit einmal redundant, aber zu sehen bekomme ich Listbox trotzdem nicht. Was ist im Quelltext falsch?

Weil du sie zur Controls Collection des entsprechenden Parent Control freilich hinzufügen musst.

aths
2005-11-20, 19:40:30
Das sagt mir jetzt gar nichts.

grakaman
2005-11-20, 19:53:24
Das sagt mir jetzt gar nichts.

Na jede Klasse, die von Control abgeleitet ist, sei es explizit oder implizit, besitzt eine Controls Eingenschaft, die eine Collection hält, in der alle Subcontrols enthalten sind. Das selbe trifft dann natürlich auch für die Subcontrols zu, da die ja auch von Control in irgend einer Art und Weise abgeleitet sind. In der Render Methode eines Controls wird dann nämlich über die Control Collection iteriert und für jedes Subcontrol dann jeweils wieder die Render Methode aufgerufen (rekursiv). Das sollte dann z.B. so aussehen:

ListBox lb1 = new ListBox();
this.Controls.Add(lb1);
lb1.Top = 1;
lb1.Left = 1;
lb1.Width = 300;
lb1.Height = 300;

aths
2005-11-20, 20:14:01
Danke, das klappt jetzt.