ListTypeEditor

Anzeigen unterschiedlicher Objekte in einem eigenen Listen-Control

Damit alles richtig funktioniert (im Beispielprojekt sind keine DLLs enthalten, und die müssen beim Start vorhanden sein), muss das Projekt (als Startprojekt ListTypeEditorTest festlegen) einmal ausgeführt, geschlossen und danach wieder geöffnet werden.

Interessant an diesem Beispiel ist die DesignTime-Unterstützung für eine Liste, in die unterschiedliche Objekte eingefügt werden können. Also nach dem zweiten Öffnen des Projektes im Design-Modus bleiben und mal die Controls vom Typ TestControl auf Form1 ansehen. (Man kann auch beliebig viele derartige Controls neu auf der Windows Form platzieren oder sie kopieren und einfügen.)

Ist eines der Controls selektiert, findet man im Eigenschaftsfenster (rechts unten) unter "Sonstiges" die Eigenschaft "Elemente". Diese Eigenschaft mal mit der Maus auswählen - hier kann man also einer Liste neue Elemente hinzufügen und diese verändern.

Wie hier zu sehen, können diese Listen-Elemente sogar unterschiedlichen Typs sein (sie erben aber von einer einheitlichen Basisklasse).
Um Inhalte von Komponenten oder Controls in Windows Forms bleibend zu speichern, ist wichtig, dass alle zu speichernden Objekte serialisierbar sind.

Also unbedingt im DesignMode bleiben, wenn das Projekt ausgeführt wird, kann man keine Properties im Eigenschaftsfenster mehr verändern.
Natürlich hab ich hier auch nicht alles allein gemacht, Quelle für mich war das Beispiel "Editing multiple Types of Objects with Collection Editor and Serializing Objects" von Oktay1 auf codeproject.com.

Hier mal noch ein Bild, wie es aussehen sollte:

Listen im DesignMode im Windows Forms Editor bearbeiten

Viel Spaß beim Ausprobieren und Grüße,

Thomas Bergner

Wer Fragen hat, meine Mailadresse lautet: thbergner@t-online.de