C# - dynamisch Objekte erzeugen/benennen?

Gast #817679
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
Gast #817946
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)
{
    ...
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.