using System; using System.Xml.Serialization; // Does XML serializing for a class. using System.Drawing; // Required for storing a Bitmap. using System.IO; // Required for using Memory stream objects. using System.ComponentModel; // Required for conversion of Bitmap objects. namespace disc1 { /// /// Customer test class to demonstrate how to include custom metadata attributes in a /// class so that it can be serialized/deserialized to/from XML. /// /// References: /// XML Serialization at http://samples.gotdotnet.com/: /// http://samples.gotdotnet.com/QuickStart/howto/default.aspx?url=/quickstart/howto/doc/xmlserialization/rwobjfromxml.aspx /// /// How do I serialize an image file as XML in .NET? /// http://www.perfectxml.com/Answers.asp?ID=2 /// // Set this 'Customer' class as the root node of any XML file its serialized to. [XmlRootAttribute("Customer", Namespace="", IsNullable=false)] //Each customer here refers to the picture and properties of each cell of the TableLayoutPanel public class Customer { private Bitmap picture; /// /// Default constructor for this class (required for serialization). /// public Customer() { } // Set this 'DateTimeValue' field to be an attribute of the root node. // By NOT specifing any custom Metadata Attributes, fields will be created // as an element by default. public string CustomerName; public int ColorName; public int PanelPadding; // Set serialization to IGNORE this field (ie. not add it to the XML). [XmlIgnoreAttribute()] public bool CustomerPaid; // Set serialization to IGNORE this property because the 'PictureByteArray' property // is used instead to serialize the 'Picture' Bitmap as an array of bytes. [XmlIgnoreAttribute()] public Bitmap Picture { get { return picture; } set { picture = value; } } public int Index; // Serializes the 'Picture' Bitmap to XML. [XmlElementAttribute("Picture")] public byte[] PictureByteArray { get { if (picture != null) { TypeConverter BitmapConverter = TypeDescriptor.GetConverter(picture.GetType()); return (byte[]) BitmapConverter.ConvertTo(picture, typeof(byte[])); } else return null; } set { if (value != null) picture = new Bitmap(new MemoryStream(value)); else picture = null; } } } }