www.mikrocontroller.net

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


Autor: gaston (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
switch(Auswahl)
{
   1 : FormTyp1 form = new FormTyp1(para);
       form.ShowDialog(); // Formular blockiert restliches Programm bis geschlossen
       form.Dispose();
       this.Refresh();
       break;
   2 : FormTyp2 form = new FormTyp2(para);
       form.ShowDialog(); // Formular blockiert restliches Programm bis geschlossen
       form.Dispose();
       this.Refresh();
       break;
  ...
}

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

Autor: entity (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)
{
    ...
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.