Forum: PC-Programmierung C# - dynamisch Objekte erzeugen/benennen?


von gaston (Gast)


Lesenswert?

Hallo,

Ich bastele an einer Anwendung herum, bei der eine Konfiguration mit 
verschiedenen Elementen erstellt wird und dann jedes Element einzeln 
bearbeitet werden kann. Die verschiedenen Elementklassen werden durch 
unterschiedliche Formulare (Windows Forms) bearbeitet.
Bis jetzt hatte ich das so geregelt:
1
switch(Auswahl)
2
{
3
   1 : FormTyp1 form = new FormTyp1(para);
4
       form.ShowDialog(); // Formular blockiert restliches Programm bis geschlossen
5
       form.Dispose();
6
       this.Refresh();
7
       break;
8
   2 : FormTyp2 form = new FormTyp2(para);
9
       form.ShowDialog(); // Formular blockiert restliches Programm bis geschlossen
10
       form.Dispose();
11
       this.Refresh();
12
       break;
13
  ...
14
}

Dabei wird immer nur das jeweilige Element geöffnet und danach wieder 
geschlossen und entfernt.
Jetzt soll es aber möglich sein das mehrere Formulare gleichzeitig 
geöffnet werden können (also man kann mehrere Elemente aus der 
Konfiguration öffnen).

Mein Problem liegt jetzt natürlich darin das ich nicht voraussehen kann 
welches Formular schon offen ist bzw. wie ich jedem Formular einen 
eigenen Namen geben kann. Bis jetzt hieß ja jedes nur form und wurde 
nach Verwendung geschlossen.
Kann ich irgendwie die Namen zur Erzeugung dynamisch erstellen oder 
bliebe da nur eine riesige switch-Anweisung als Möglichkeit.

Ich hoffe ich konnte mein Problem ausreichen klarstellen und das mir 
jemand  helfen kann.

MfG
gaston

von entity (Gast)


Lesenswert?

Das kannst du sicher mit einer Liste lösen:

List<Form> formList = new List<Form>;


..

Form f = new Form();
formList.Add(f);

Dann kannst du über die Liste iterieren, das ersetzt dann dein großes 
Switch:

foreach (Form f in formList)
{
    ...
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.