Laden...

Wie kann man ImageList serializieren?

Erstellt von alaudo vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.208 Views
A
alaudo Themenstarter:in
16 Beiträge seit 2007
vor 16 Jahren
Wie kann man ImageList serializieren?

Ich möchte eine ImageList serialisieren, der folgende Code, der in vielen anderen Fällen funzt, verursacht die "InvalidOperation"-Ausnahme.

            // writing icons into "icons.xml"
            using (TextWriter streamWriter = new StreamWriter("..\\ini\\icons.xml", false))
            {
                XmlSerializer xmlFileTypes = new XmlSerializer(typeof(ImageList));
                TextWriter textFileTypes = new StringWriter();
                xmlFileTypes.Serialize(textFileTypes, SmallIconList);
                streamWriter.Write(textFileTypes);
            }

Wie kann ich dann die ImageList doch in eine externe Datei schreiben?

K
231 Beiträge seit 2005
vor 16 Jahren

moin,

versuche es mal mit dem BinaryFormatter.

Raik

A
alaudo Themenstarter:in
16 Beiträge seit 2007
vor 16 Jahren

Danke für den Tipp, das funktioniert bei mir aber auch nicht.
Folgender Code:

            // writing icons into "icons.dat"
            using (FileStream streamWriter = new FileStream("..\\ini\\icons.dat", FileMode.Create) )
            {
                BinaryFormatter binIcons = new BinaryFormatter();
                try
                {
                    binIcons.Serialize(streamWriter, SmallIconList);
                }
                catch (SerializationException e)
                { }
               
            }

generiert nur die Datei icons.dat, die unabhängig vin der ImageList-Größe immer 17 bytes groß und nicht mehr deserialisiert werden kann.
Was mache ich dann falsch?

Danke im Voraus,
Alexander.

183 Beiträge seit 2004
vor 16 Jahren

Exception wegfangen aber nicht ansehen 8)

System.Runtime.Serialization.SerializationException wurde nicht behandelt.
Message="Der Typ System.Windows.Forms.ImageList in Assembly System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ist nicht als serialisierbar gekennzeichnet."

Eine ImageList ist IMHO nicht serialisierbar sondern nur die Images. Stickwort: ISerializable

So einfach wie möglich, aber nicht einfacher. [Albert Einstein]

take a look at
* baer-torsten.de
* codinghints

3.971 Beiträge seit 2006
vor 16 Jahren

Aber du kannst dir einen Wrapper schreiben, der mittels ISeriazable und IXmlSerizable seinen Inhalt (den der ImageList) in dein gewünschten Format schreibt.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

A
alaudo Themenstarter:in
16 Beiträge seit 2007
vor 16 Jahren

Aber du kannst dir einen Wrapper schreiben, der mittels ISeriazable und IXmlSerizable seinen Inhalt (den der ImageList) in dein gewünschten Format schreibt.

Der Weg ist für mich zu lang, ich kann es kaum glauben, dass in .Net keine Möglichkeit besteht, die Images einer Liste zu speichern...

3.971 Beiträge seit 2006
vor 16 Jahren

Bei Component und Control-Klassen macht es einfach keinen Sinn diese zu Serialisieren. Für jedes dieser Objekte wird beispielsweise in Windows ein Handle registriert und nach Dispose dieser freigegeben. Wenn du das ganze serialisierst, serialisierst du ein Handle das beim deserialisieren schon nicht mehr existiert oder schlimmer von einem Control in Verwendung ist.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...